事象
serverless frameworkでVPCやサブネット等を作成する構成でsls deploy
コマンドを実行する
→権限エラーで怒られる
→AdministratorAccess
の権限を付与してたiamロールを付与しても怒られる
console
% sls deploy
(略)
Error:
CREATE_FAILED: SampleVPC (AWS::EC2::VPC)
Resource handler returned message: "You are not authorized to perform this operation. Encoded authorization failure message:
(略)
serverless.yml (一部抜粋)
provider:
name: aws
runtime: python3.8
region: ap-northeast-1
iam:
role: (AdministratorAccessを付与しているiamロール)
# (略)
resources:
Resources:
# VPC
SampleVPC:
Type: AWS::EC2::VPC
DeletionPolicy: Delete
Properties:
CidrBlock: 10.1.0.0/16
Tags:
- Key: From
Value: SampleVPC
# (略)
原因
AWS CLIを実行する権限が弱かったため権限エラーが発生していた。
この権限情報は特に設定していなければ~/.aws/credentials
に登録されている[default]
の認証情報を用いてAWS CLIを実行している。
解決策
1. AWS CLIで登録したアカウントに権限を付与する
policyを追加しましょう
2. serverless frameworkを実行する認証情報を設定する
-
実行用のアカウントやロールのアクセスキーを作成し、メモする
-
ターミナルで認証情報を追加するコマンドを叩く
terminalserverless config credentials --provider aws --key [アクセスキー] --secret [シークレットアクセスキー] --profile [認証情報の名前]
-
[認証情報の名前]
は分かりやすいように適当に名前をつけてください(例:serverless)
-
-
serverless.ymlに用いる認証情報を追記する
serverless.yml (一部抜粋)provider: name: aws runtime: python3.8 region: ap-northeast-1 profile: serverless # ←追記 iam: role: (AdministratorAccessを付与しているiamロール) # (略)
実行してみると、、、
terminalsls deploy (略) Service deployed to stack [スタック名] (185s)
無事deployが通りました!