こちらのつづき
blog.kasei-san.com
GitHub Actions から AWS lambda を実行するまでの流れ
- lambdaを作成
- lambdaの実行権限を持つIAMユーザを作成
- AWS認証の action
aws-actions/configure-aws-credentials
を GitHub Actions に組み込む
- 認証に使用する、lambdaの実行権限を持つIAMユーザの各キーを secrets に設定
- 実行
lambdaを作成
"hello"
を puts するだけのシンプルな lambda hello
を us-east-1
に作成
require 'json'
def lambda_handler(event:, context:)
# TODO implement
puts 'hello'
{ statusCode: 200, body: JSON.generate('Hello from Lambda!') }
end
lambdaの実行権限を持つIAMユーザを作成
IAMユーザ github-actions
を作成
$ aws iam create-user --user-name github-actions
{
"User": {
"Path": "/",
"UserName": "github-actions",
"UserId": "********",
"Arn": "arn:aws:iam::********:user/github-actions",
"CreateDate": "2020-03-03T05:02:59Z"
}
}
github-actions
に lambda実行権限持つロールを付与
$ aws iam attach-user-policy \
--user-name github-actions \
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaRole
ローカルで動作確認
$ aws lambda invoke --function-name hello --region us-east-1 response.json
{
"StatusCode": 200,
"ExecutedVersion": "$LATEST"
}
AWS認証の action aws-actions/configure-aws-credentials
を GitHub Actions に組み込む
aws-actions/configure-aws-credentials
は AWS 公式の github action
Configure AWS credential and region environment variables for use in other GitHub Actions.
github.com
こんなふうに、アクセスキーとシークレットキーとリージョンを設定してやれば、ユーザの権限に応じた、AWS CLI が使えるようになる
name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Run a one-line script
run: echo Hello, world!
- name: Run a multi-line script
run: |
echo Add other actions to build,
echo test, and deploy your project.
認証に使用する、各キーを secrets に設定
GitHub Actionsで使用したい秘匿情報は、secrets に設定して、そこから取得する
アクセスキーを取得
$aws iam create-access-key --user-name github-actions
{
"AccessKey": {
"UserName": "github-actions",
"AccessKeyId": "********",
"Status": "Active",
"SecretAccessKey": "********",
"CreateDate": "2020-03-03T05:03:23Z"
}
}
アクセスキーを github の secrets に設定
secrets に設定することで、GitHub Actions にて ${{ secrets.key_name }}
で参照できるようになる
settings -> secrets で設定可能
ここに、AWS_ACCESS_KEY_ID
と AWS_SECRET_ACCESS_KEY
を設定する
実行
lambdaを実行する処理をstepに追加する
name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Run a hello lambda
run: aws lambda invoke --function-name hello response.json
動作確認
コードをPUSHして、GitHub Actions から lambda が実行されて、正常終了の結果が返ってきたことを確認 👏