ããã«ã¡ã¯ãéçºé¨éï¼ãããã¯ãæè¡æ¬é¨ï¼ã®å®®ä¸ã§ãã
BIGLOBE ã§ã¯ GitHub Actions ã«ããä½æ¥å¹çåã«åãçµãã§ãã¾ãã
æ¬è¨äºã§ã¯ãGitHub Actions ãå¾æã¨ããç¹ãè¸ã¾ãã¤ã¤ãAWS Lambda ã¨é£æºãã¦æä½æ¥ã大å¹
ã«æ¸ããå®ä¾ãã½ã¼ã¹ã³ã¼ãä»ãã§ç´¹ä»ãã¾ãã
- æ³å®èªè
- GitHub Actions ã使ãã¨ä½ãããããã®ãï¼
- äºä¾ç´¹ä»
- Lambda ãå®è¡ããã¢ã¯ã·ã§ã³
- ã¾ã¨ã
æ³å®èªè
- æä½æ¥ãèªååããä½æ¥ãå¹çåãããã
- GitHub Actions ããããã使ã£ã¦ã¿ãã
- GitHub Actions ã®å°å ¥äºä¾ãç¥ããã
- GitHub Actions ãã Lambda ãå®è¡ããã
GitHub Actions ã使ãã¨ä½ãããããã®ãï¼
GitHub Actions ã¯ã¢ã¯ã·ã§ã³ãçµã¿åãããã¯ã¼ã¯ããã¼ã¨ãã¦å®ç¾©ãããã¨ã§æ§ã
ãªããã»ã¹ãèªååã§ãã¾ãã
ã¾ããæ°å¤ãã®ã¢ã¯ã·ã§ã³ã Marketplace ã«å
¬éããã¦ããã容æã«ã¯ã¼ã¯ããã¼ãä½æã§ãã¾ãã
ä»ã«ã Composite Action ããReusable workflows ã¨ãããã®ã§ã¦ã¼ã¶ã¼ç¬èªã®åå©ç¨å¯è½ãªã¢ã¯ã·ã§ã³ã»ã¯ã¼ã¯ããã¼ãå®è£
ã§ãã¾ãã
ãã®ããã«ãéçºå¹çãé«ããªããã¡ã³ããã³ã¹ã容æã«ããä»çµã¿ãããã®ã¯ãããããã¤ã³ãã§ããã
å
·ä½çã« GitHub Actions ãå¨åãçºæ®ããã¦ã¼ã¹ã±ã¼ã¹ã¨ããã¾ãåããªãã¦ã¼ã¹ã±ã¼ã¹ãæãã¾ãã
代表çãªã¦ã¼ã¹ã±ã¼ã¹
ã¡ã¤ã³ã®ã¦ã¼ã¹ã±ã¼ã¹ã¯ CI/CD ã«ãªããã¨æãã¾ãããGitHub ä¸ã§ã®ã¢ã¯ãã£ããã£ãèªååã容æã§ãã
以ä¸ã«ããã¤ãä¾ãæãã¾ãã
- CI
- Pull Request ãä½æããããåä½ãã¹ãã Linter ãå®è¡ãã
- CD
- ãã¹ããéãããã¼ã¸ããããéçºç°å¢ã«ãããã¤ãã
- Pull Request ãæ¿èªããããªãªã¼ã¹ãã©ã³ãã main ãã©ã³ãã«ãã¼ã¸ããããæ¬çªç°å¢ã«ãããã¤ãã
- GitHub ä¸ã§ã®ã¢ã¯ãã£ããã£ãèªåå
- Issue ãä½æãããã GitHub Projects ã«è¿½å ããã©ã³ãã ã§æ å½è ãã¢ãµã¤ã³ãã
- 1ã«æ以ä¸æ¾ç½®ããã Issue ã close ãã
ãã¾ãåããªãã¦ã¼ã¹ã±ã¼ã¹
GitHub Actions ã«ã¯ ã¯ã¼ã¯ããã¼ãã¹ã±ã¸ã¥ã¼ã«èµ·åããä»çµã¿ãããã¾ãã
ããããªãããã¯ã¼ã¯ããã¼å®è¡ã®è² è·ãé«ãæé帯ã¯é
延ããå¯è½æ§ããããæééãã«ã¯ã¼ã¯ããã¼ãå®è¡ãããã¨ããã¦ã¼ã¹ã±ã¼ã¹ã«ã¯åãã¦ãã¾ããã
GitHub å
¬å¼ããã¥ã¡ã³ã ã«ããã®ç¹ã«ã¤ãã¦æ¸ããã¦ãã¾ãã®ã§æ³¨æãã¦ãã ããã
äºä¾ç´¹ä»
課é¡
åä½ãã¹ã㯠Pull Request ä½æãããªã¬ã¼ã« CI ãå®è¡ããã¦ãã¾ããããçµåãã¹ããããã©ã¼ãã³ã¹ãã¹ãã¯æä½æ¥ãå¤ãç
©éã§ããã
ãã¹ãçµæã¯ãªãªã¼ã¹å¯å¦ãå¤å®ããããã®ã¨ããã³ã¹ã¨ãã¦ã GitHub ã® Issue ã«æ®ãéç¨ã«ãªã£ã¦ãã¾ãã
ãã®ããã以ä¸ã®æµãã§è¡ã£ã¦ãã¾ããã
- Issue ä½æ
- AWS ããã¼ã¸ãã³ã³ã½ã¼ã«ã«ãã°ã¤ã³
- ãªã°ã¬ãã·ã§ã³ãã¹ãç¨ Lambda ãå®è¡
- ã¢ããªã±ã¼ã·ã§ã³ã®æ©è½ã«å¤æ´ãå ¥ããªãå ´åã¯ãããçµåãã¹ãã¨ãã¦ãã¾ã
- ãã¹ãçµæã Issue ã«ã³ã¡ã³ã
- ããã©ã¼ãã³ã¹ãã¹ãç¨ Lambda ãå®è¡
- ãã¹ãçµæã Issue ã«ã³ã¡ã³ã
ä¾ãã°ä¾åã©ã¤ãã©ãªã®ãã¼ã¸ã§ã³ã¢ãã対å¿ãªã©ãã¢ããªã±ã¼ã·ã§ã³ã®æ©è½ã«å¤æ´ãå
¥ããªããªãªã¼ã¹ãããã£ã¨ããããã«ã¯ããã®æä½æ¥ãé»å®³è¦å ã®1ã¤ã¨ãªã£ã¦ãã¾ããã
ããã§ããã®ä¸é£ã®æµãã GitHub Actions ã§èªååãã¾ããã
æ¹åå¾
å¤å°ã¼ããã¦ãã¾ããããããã以ä¸ã®ãããªæ§æã¨ãªã£ã¦ãã¾ãã
API ã³ã³ãã
ECS Fargate ã§æ§æããã REST API ã¢ããªã±ã¼ã·ã§ã³ã®ã³ã³ããã§ãã
ãã¹ãç¨ã® Lambda ããã API ãå®è¡ãããããããã¹ããã¼ã¿ãè²ä»ãããä»çµã¿ãæã£ã¦ãã¾ãã
ãªã°ã¬ãã·ã§ã³ãã¹ãç¨ Lambda
åã¦ã¼ã¹ã±ã¼ã¹ã«ãã°ã¬ã¼ãããªããï¼ä»åã®ä¿®æ£ãæ°ããªä¸å
·åãèµ·ããã¦ããªããï¼ã確èªãã¦ãã¾ãã
ã¦ã¼ã¹ã±ã¼ã¹ã®ç¢ºèªã¯ API ãé 次å®è¡ãããã¨ã§å®ç¾ãã¦ãã¾ãã
åç·å¥ç´ã®ã©ã¤ããµã¤ã¯ã«ã管çããã¢ããªã±ã¼ã·ã§ã³ãä¾ã«ã¨ãã¨ä»¥ä¸ã®ãããªã¤ã¡ã¼ã¸ã§ãã
- ã¦ã¼ã¹ã±ã¼ã¹ï¼å
åç·ã®å¥ç´å®äº
- ç³è¾¼API -> å¥ç´éå§API -> å¥ç´å®äºAPI
- ã¦ã¼ã¹ã±ã¼ã¹ï¼å
åç·ã®ç³è¾¼ãã£ã³ã»ã«
- ç³è¾¼API -> ç³è¾¼ãã£ã³ã»ã«API
ããã©ã¼ãã³ã¹ãã¹ãç¨ Lambda
å½ããåã®ãã¨ã§ãããäºåã«æ§è½è¦ä»¶ã決ãã¦ãããã¨ãéè¦ã§ãã
ããã©ã¼ãã³ã¹ãã¹ãã¯ããã«åããç¹å®ã®æ¡ä»¶ä¸ã§åºæºãæºããããã§ãã¯ãã¦ãã¾ãã
ä¾ãã°ã以ä¸ã®ãããªå½¢ã§ãã
- æ¡ä»¶
- ECS ã¿ã¹ã¯æ°: 3
- å¤é度: 10
- 5åãã¤ã¦ã¼ã¹ã±ã¼ã¹ãå®è¡
- åºæº
- 99ãã¼ã»ã³ã¿ã¤ã«ã®ã¿ã¼ã³ã¢ã©ã¦ã³ãã¿ã¤ã ã 100 ms 以ä¸
èªååã«ããå¹æ
æ¹åå¾ã§ã¯ GitHub Actions ãå®è¡ããã ãã§è¯ããªããä½æ¥æéãåçã«æ¸ãã¾ããã
ä½ãããæä½æ¥ã®ã¹ãã¬ã¹ããéæ¾ãããã®ã大ããã§ãâ¦
Before | After | |
---|---|---|
ã¹ãããæ° | 6 | 1 |
ä½æ¥æé | ç´30å | ç´3å |
Lambda ãå®è¡ããã¢ã¯ã·ã§ã³
ããã¾ã§ã¯ GitHub Actions ã使ã£ãããã»ã¹èªååã®å¹æã«ã¤ãã¦ãäºä¾ã交ããªããã話ããã¾ããã
ããããã¯ãLambda ãå®è¡ããã¢ã¯ã·ã§ã³ã«ã¤ãã¦æè¡çãªãã¤ã³ãã触ãã¾ãã
GitHub Actions ã§ä½¿ããã¢ã¯ã·ã§ã³
GitHub Actions ã§ä½¿ããã¢ã¯ã·ã§ã³ã¯3種é¡ããã¾ãã
ä»åã¯ãã®ä¸ã§ã Composite Action ã§å®è£
ãã¾ããã
Composite Action ã¨ã¯åå©ç¨å¯è½ãª Action ã®ãã¨ã§ãã
Lambda ãå®è¡ãããã¨ããã¦ã¼ã¹ã±ã¼ã¹ã¯è²ã
èãããã¾ãã®ã§ãæ§ã
ãªã¯ã¼ã¯ããã¼ããå©ç¨ã§ããããã«ãã¦ãã¾ãã
ã½ã¼ã¹ã³ã¼ã
ã¾ãã¯ãComposite Action ã®ã¢ã¦ãã©ã¤ã³ãã¨ã«æ¬ã¢ã¯ã·ã§ã³ã®æ¦è¦ã説æãã¾ãã
name
: ã¢ã¯ã·ã§ã³ã®åå- Execute Lambda synchronously
description
: ã¢ã¯ã·ã§ã³ã®èª¬æï¼çç¥å¯ï¼- Lambda ãåæå®è¡ãã¾ã
inputs
: ã¢ã¯ã·ã§ã³ã§ä½¿ç¨ãããã©ã¡ã¼ã¿ï¼çç¥å¯ï¼- AWS ã®æ å ±ãLambda å®è¡æã«å¿ è¦ãªæ å ±(é¢æ°åãå ¥åãã©ã¡ã¼ã¿ã¨ãã¦æ¸¡ã JSON ç)ãåãåãããã«ãã¦ãã¾ãã
outputs
: ã¢ã¯ã·ã§ã³ãåºåãããã©ã¡ã¼ã¿ï¼çç¥å¯ï¼- Lambda ã®å®è¡çµæï¼OK / NGï¼, Lambda é¢æ° ãè¿ãã¬ã¹ãã³ã¹ãåºåããããã«ãã¦ãã¾ãã
runs
: ã¢ã¯ã·ã§ã³ã®å®è¡æ¹æ³using
: ã©ã®æ¹æ³ã§å®è¡ããããæå®- Composite Action ã§ä½æãã¦ããããã"composite" ãæå®ãã¦ãã¾ãã
steps
: ã¢ã¯ã·ã§ã³ã§å®è¡ããã¹ããã- 大ãã inputs ã® JSON ã®ãã§ãã¯ãAWS ã®èªè¨¼æ å ±åå¾ãLambda ã®å®è¡ã®3ã¤ã«åããã¦ãã¾ãã
ã½ã¼ã¹ã³ã¼ãã¯ãã¡ãã§ãã
name: Execute Lambda synchronously description: Lambda ãåæå®è¡ãã¾ã inputs: lambda-function-name: required: true description: å®è¡ãã Lambda ã®åå payload-json: required: false description: payload ã¨ãã¦æ¸¡ã json payload-json-file-path: required: false description: payload ã¨ãã¦æ¸¡ã json ãã¡ã¤ã« ã®ãã¹ aws-account-id: required: true description: AWSã¢ã«ã¦ã³ãID iam-role-name: default: lambda-execution-with-gh-action required: true description: IAMãã¼ã«å read-timeout-second: default: 300 required: true description: æ大ã½ã±ããèªã¿åãæé(ç§) outputs: result: value: ${{ steps.execute-lambda.outputs.result }} description: Lambda ã®å®è¡çµæ (OK / NG) response: value: ${{ steps.execute-lambda.outputs.response }} description: Lambda function ã®ã¬ã¹ãã³ã¹ runs: using: composite steps: # payload-json ã payload-json-file-path ã®ããããã¯å¿ é - name: Required check for payload id: required-check-for-payload if: ${{ inputs.payload-json == '' && inputs.payload-json-file-path == '' }} shell: bash run: | echo "ERROR: Either payload-json or payload-json-file-path is required." exit 1 - name: Check payload json file path id: check-payload-json-file-path if: ${{ inputs.payload-json-file-path != '' }} shell: bash run: | set -x if [ ! -f "${{ inputs.payload-json-file-path }}" ]; then echo "ERROR: Does not exist ${{ inputs.payload-json-file-path }}." exit 1 fi # json å½¢å¼ããã§ã㯠- name: Check json format id: check-json-format env: INPUT_PAYLOAD_JSON: ${{ inputs.payload-json }} INPUT_PAYLOAD_JSON_FILE_PATH: ${{ inputs.payload-json-file-path }} shell: bash run: | set -x payload_json=$(echo "${INPUT_PAYLOAD_JSON:-$(cat "${INPUT_PAYLOAD_JSON_FILE_PATH}")}") if ! echo "${payload_json}" | jq -e . > /dev/null 2>&1; then echo "ERROR: Invalid json format. ${payload_json}" exit 1 fi echo "payload-json=$(echo "${payload_json}" | jq -c .)" >> "${GITHUB_OUTPUT}" - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: aws-region: ap-northeast-1 role-to-assume: arn:aws:iam::${{ inputs.aws-account-id }}:role/${{ inputs.iam-role-name }} role-session-name: gh-action-${{ github.run_id }} # Lambda ãå®è¡ãããã¨ã§æ¨æºåºåãããã®ã¯ä»¥ä¸ãjq -s 㧠2㤠㮠json object ãé åã«ã㦠$output å¤æ°ã«ä»£å ¥ãã¦ãã # Array[0] Lambda function ã®ã¬ã¹ãã³ã¹ (outfile ã¨ãã¦/dev/stdoutãæå®) # Array[1] å¼ã³åºããã Lambda function ã®ãã¼ã¸ã§ã³ãªã©ã®è¿½å ãã¼ã¿ (CLI ã®ããã©ã«ãã®æå) # { "ExecutedVersion": "$LATEST", "StatusCode": 200, ... } # 詳ããã¯ä»¥ä¸ãåç § # https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/invocation-sync.html # https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/invoke.html#output - name: Execute Lambda id: execute-lambda shell: bash env: PAYLOAD_JSON: ${{ steps.check-json-format.outputs.payload-json }} LAMBDA_FUNCTION_NAME: ${{ inputs.lambda-function-name }} READ_TIMEOUT_SECOND: ${{ inputs.read-timeout-second }} run: | output=$( aws lambda invoke \ --function-name "${LAMBDA_FUNCTION_NAME}" \ --cli-binary-format raw-in-base64-out \ --payload "${PAYLOAD_JSON}" \ --cli-read-timeout "${READ_TIMEOUT_SECOND}" \ /dev/stdout \ | jq -s ) echo "${output}" if echo "${output}" | jq -e -r '.[1].FunctionError' > /dev/null; then echo "ERROR: Lambda execution failed." result="NG" else echo "INFO: Lambda execution success." result="OK" fi echo "result=${result}" >> "${GITHUB_OUTPUT}" response=$(echo "${output}" | jq .[0]) echo "INFO: Lambda function response: "${response} response="${response//'%'/'%25'}" response="${response//$'\n'/'%0A'}" response="${response//$'\r'/'%0D'}" echo "response=${response}" >> "${GITHUB_OUTPUT}"
ãã¤ã³ããã¯ã¾ã£ãã¨ãã
ãããã㯠Lambda ãå®è¡ããã¢ã¯ã·ã§ã³ãå®è£ ããããã§ã®ãã¤ã³ããã¯ã¾ã£ãã¨ããã«ã¤ãã¦ã以ä¸ã®æµãã§èª¬æãã¾ãã
- GitHub Actions ã®å¶å¾¡
- ã¹ãããéã§ã®å¤ã®åã渡ã
- è¤æ°è¡ã®å¤ãæ±ã
- GitHub Actions 㨠AWS ã¨ã®é£æº
- AWS ã®èªè¨¼æ å ±åå¾
- AWS CLI
- ã³ãã³ãã©ã¤ã³ãªãã·ã§ã³
- Lambda
- åæå®è¡ã«ã¤ãã¦
GitHub Actions ã®å¶å¾¡ / ã¹ãããéã§ã®å¤ã®åã渡ã
ã¢ã¯ã·ã§ã³ã®ã¹ãããéã§å¤ãåã渡ãããã«ã¯ã以ä¸ã®ããã«ããã¨è¯ãã§ãã
- å¤ã渡ãã¹ããã
{key}={value}
ã®å½¢å¼ã§GITHUB_OUTPUT
ã«ãªãã¤ã¬ã¯ããããã¨ã§ãå¾ç¶ã®ã¹ãããã§åç §ãããã¨ãã§ãã¾ãã
ã¾ããã¹ãããã« ID ãæå®ããå¿ è¦ãããã¾ãã - å¤ãåãåãã¹ããã
${{ steps.<åã¹ãããã®ID>.outputs.<key> }}
ã®å½¢å¼ã§å¤ãåãåããã¨ãã§ãã¾ãã
ã¡ãªã¿ã«ã${{ <expression> }}
㯠GitHub Action ã®ã¢ã¯ã·ã§ã³ãã¯ã¼ã¯ããã¼ã§å¼ãè©ä¾¡ããããã®æ§æã§ãã
詳ããã¯GitHub å ¬å¼ããã¥ã¡ã³ããåç §ãã¦ãã ããã
ãµã³ãã«ã¯ãã¡ãã§ãã
- name: Set value id: step1 run: | echo "value=step1ã®å¤ã§ã" >> "${GITHUB_OUTPUT}" - name: Use value id: step2 env: STEP1_VALUE: ${{ steps.step1.outputs.value }} run: | echo "${STEP1_VALUE}" # step1ã®å¤ã§ã
GitHub Actions ã®å¶å¾¡ / è¤æ°è¡ã®å¤ãæ±ã
è¤æ°è¡ã®å¤ãåã渡ãããå ´åã工夫ãå¿
è¦ã§ãã
ä½ãã¿ã¼ã³ã対å¿æ¹æ³ãããã¾ãããä½æããã¢ã¯ã·ã§ã³ã§ã¯äºåã«ã¨ã¹ã±ã¼ãããæ¹æ³ã§å®è£
ãã¾ããã
response="${response//'%'/'%25'}" response="${response//$'\n'/'%0A'}" response="${response//$'\r'/'%0D'}" echo "response=${response}" >> "${GITHUB_OUTPUT}"
ãã®å¤ãåãåãã¹ãããã§å
ã®å¤ã«æ»ãå ´åã¯ãå½ç¶ã¢ã³ã¨ã¹ã±ã¼ããå¿
è¦ã¨ãªãã¾ãã
ã¨ã¹ã±ã¼ãã¨ã¯éã®æé ã§ã¢ã³ã¨ã¹ã±ã¼ãããã°è¯ãã§ãããã
ãã®å¯¾å¿ã¯å¤ã渡ãå´ / åãåãå´ã§ã¨ã¹ã±ã¼ã / ã¢ã³ã¨ã¹ã±ã¼ãããã¨ããæé»çãªå¶ç´ã課ããããã¾ãããã¦ãªãã®ã§ç´ãããã¨ããã§ãã
GitHub Actions 㨠AWS ã¨ã®é£æº / AWS ã®èªè¨¼æ å ±åå¾
GitHub Actions 㨠AWS ã¨ã®é£æºã§ã¯æå¹æéã®çããã¼ã¯ã³ãçºè¡ã㦠AWS å
ã®ãªã½ã¼ã¹ã«ã¢ã¯ã»ã¹ãã¦ãã¾ãã
ãã®ããã«ã¯ã以ä¸ãå¿
è¦ã¨ãªãã¾ãã
- OIDCï¼OpenID Connectï¼ID ãããã¤ãã¼ã®ä½æ
- IAM ãã¼ã«ã®ä½æ
- ä½æãã IAM ãã¼ã«ã« GitHub ã® OIDC ID ãããã¤ãã¼ã®ä¿¡é ¼ããªã·ã¼ãè¨å®
aws-actions/configure-aws-credentials
ã¢ã¯ã·ã§ã³å®è¡æã«ä½æãã IAM ãã¼ã«ãæå®
GitHub 㨠AWS ã® OIDC é£æºã«ã¤ãã¦ã詳細㯠GitHub å
¬å¼ããã¥ã¡ã³ãã«è¼ã£ã¦ãã¾ãã®ã§ããã¡ããåç
§ãã¦ãã ããã
注æç¹ã¨ãã¦ã¯ãä¿¡é ¼ããªã·ã¼ã®æ¡ä»¶ã§ GitHub ã® Organization ããªãã¸ããªãæå®ããªãã¨ãä»»æã® GitHub ãªãã¸ããªãã AWS å
ã®ãªã½ã¼ã¹ã«ã¢ã¯ã»ã¹ã§ãã¦ãã¾ãã¾ãã
å¿
ãè¨å®ãå
¥ãã¦ãã ããã
AWS CLI / ã³ãã³ãã©ã¤ã³ãªãã·ã§ã³
AWS CLI ã«ã¯å
±éããï¼ã°ãã¼ãã«ãªï¼ã³ãã³ãã©ã¤ã³ãªãã·ã§ã³ãããã¾ãã
ãã®ä¸ã§ãæ¬ã¢ã¯ã·ã§ã³ã«é¢é£ãããªãã·ã§ã³ãåãä¸ãã¾ãã
--cli-binary-format
å ¥åãã©ã¡ã¼ã¿ï¼payloadï¼ã«æ¸¡ããã¼ã¿ã®è§£éæ¹æ³ãæå®ãã¾ããããã©ã«ãã¯base64
ã§ãã
ãã¬ã¼ã³ãªãã¼ã¿ã渡ãããå ´åã¯raw-in-base64-out
ãæå®ãã¾ãã--cli-read-timeout
Lambda ãå®è¡ãã¦ããå¿çãããã¾ã§å¾ ã¤æ大æéãç§åä½ã§æå®ãã¾ããããã©ã«ãã¯60ç§ã§ãã
ãã¹ãç¨ã® Lambda ã®å®è¡ã¯60ç§ä»¥ä¸ãããã¾ãããå®è£ åæã¯ãã®ãªãã·ã§ã³ãæå®ãã¦ããããåå ã®èª¿æ»ã«1~2æéãããæéã溶ããã¾ãã...
Lambda / åæå®è¡ã«ã¤ãã¦
- åºå
æ¨æºåºåã«ã¯ 以ä¸ã®ããã« Lambda ããã®ã¬ã¹ãã³ã¹ãããã¼ãå«ãæ å ±ãåºåããã¾ãã
json { "ExecutedVersion": "$LATEST", "StatusCode": 200 }
Lambda é¢æ°ã®ã¬ã¹ãã³ã¹ã¯æå®ã®ãã¡ã¤ã«ã«åºåããã¾ãã
ä»åã®ã¢ã¯ã·ã§ã³ã§ã¯/dev/stdout
ãæå®ãã¦ãããããæ¨æºåºåã«åºåããã¾ãã - ã¨ã©ã¼ã®å¤å®
Lambda é¢æ°å ã§ã¨ã©ã¼ãè¿ããã¨ãã¦ãStatusCode
ã¯200ã«ãªãã¾ãã
ãã£ã¦ãã¨ã©ã¼ãã©ããã®å¤å®ã«StatusCode
ã¯ä½¿ãã¾ããã
ã¨ã©ã¼ã®å¤å®ã«ã¯FunctionError
ã®æç¡ã§å¤å®ããå¿ è¦ãããã¾ãã
詳ããã¯ä»¥ä¸ãåç
§ãã¦ãã ããã
AWS ããã¥ã¡ã³ã - å¼ã³åºã
AWS ããã¥ã¡ã³ã - åæå¼ã³åºã
ã¾ã¨ã
æ¬è¨äºã§ã¯ãGitHub Actions ã«ããèªååã®å¹æ㨠GitHub Actions ãã AWS Lambda ãå®è¡ããæ¹æ³ã«ã¤ãã¦ç´¹ä»ãã¾ããã
GitHub Actions ããã¾ãæ´»ç¨ããã¨æä½æ¥ã®é¢åãªé¨åãèªååã§ããå¥ã®ä½æ¥ã«æéãå²ãå½ã¦ããã¾ãã
æå¾ã«ãGitHub Actions ãå®è£
ããã«ãããã大äºã ã¨æããã¤ã³ããæãã¾ãã
- ãããªã GitHub Actions ã®ã¢ã¯ã·ã§ã³ãã¯ã¼ã¯ããã¼ãå®è£ ããªã
- ã©ãããã¹ããããè¸ãã°ãããããã¨ãå®ç¾ã§ãããèãã
ï¼ä¾ï¼ããã¼ãã£ã¼ããã¢ã¯ãã£ããã£å³ãæ¸ãã¦ã¿ã - æå
ã®ã¿ã¼ããã«çã§ã³ãã³ããå®è¡ããåããã¨ã確èªãã
ä»åå®è£ ããã¢ã¯ã·ã§ã³ã¯1ã¤1ã¤ãã¿ãã¨ã»ã¨ãã©ã Bash ããå®è¡å¯è½ãªã³ãã³ãã§ãã - 3ã¾ã§ãã¦ã¯ãã㦠GitHub Actions ã§å®è£ ãã
ä¸è¨ã®ãã¤ã³ããåèã«ãã¦ããã ãããã²ææ¥ããããã¸ã§ã¯ãã«å°å
¥ãã¦ã¿ã¦ã¯ãããã§ããããã
GitHub Actions æ´»ç¨ã®ç¬¬ä¸æ©ã¯ãã¾ã使ã£ã¦ã¿ããã¨ã
BIGLOBE ã§ããèªèº«ã®å°ããã¨ã GitHub Actions ã§è§£æ±ºããããã¨ããç ä¿®ãéå¬ããæ´»ç¨ã§ãã人ãå¢ãããã¨ãã¦ãã¾ãã
ç ä¿®ã®æ§åã¯ãGitHub Actionsã楽ããå¦ã¶ï¼BIGLOBEã¨GitHub Japanã®ããããã«ã½ã³ã¬ãã¼ãã«ã¦ç´¹ä»ãã¦ãã¾ãã®ã§ããããããã°ã覧ãã ããã
â» GitHubã¯ãGitHub, Inc.ã®åæ¨ã¾ãã¯ç»é²åæ¨ã§ãã
â» AmazonãAWSãAmazon Web Servicesã¯ãç±³å½ãã®ä»ã®è«¸å½ã«ããããAmazon.com, Inc. ã¾ãã¯ãã®é¢é£ä¼ç¤¾ã®åæ¨ã§ãã