AWS SAM CloudFormationでAPI GatewayのIAMロールをデプロイする方法

AWS SAM CloudFormationでAPI GatewayのIAMロールをデプロイする方法

API Gateway用のIAMロールをデプロイする手順です。ポリシーは適当にアタッチしています。

エクスポートを2つ指定しています。

template-api.yml

AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: API Gateway deploy
Parameters:
Stage:
Description: Stage name
Type: String
AllowedValues:
– prod
– dev
– test
ApiRoleName:
Description: API Gateway role name
Type: String
Resources:
ApiGatewayRole:
Type: AWS::IAM::Role
Properties:
RoleName: !Ref ApiRoleName
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
– Effect: Allow
Principal:
Service:
– apigateway.amazonaws.com
Action:
– sts:AssumeRole
ManagedPolicyArns:
– arn:aws:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs
Tags:
– Key: Name
Value: !Sub
– ${Stage}${ApiRoleName}
– { Stage: !Ref Stage,ApiRoleName: !Ref ApiRoleName}
– Key: Stage
Value: !Ref Stage
Outputs:
ApiGatewayRoleID:
Description: ApiGatewayRole ID
Value: !Ref ApiGatewayRole
Export:
Name: !Sub
– ${Stage}ApiGatewayRoleID
– { Stage: !Ref Stage }
ApiGatewayRoleARN:
Description: ApiGatewayRole ARN
Value: !GetAtt ApiGatewayRole.Arn
Export:
Name: !Sub
– ${Stage}ApiGatewayRoleARN
– { Stage: !Ref Stage }

view raw
gistfile1.txt
hosted with ❤ by GitHub

aws cloudformation packageコマンドでテンプレートを吐き出します。

C:\tmp>aws cloudformation package –template-file template-api.yml –output-template-file template-api-out.yml –s3-bucket バケット名 –profile=default
Successfully packaged artifacts and wrote output template to file template-api-out.yml.
Execute the following command to deploy the packaged template
aws cloudformation deploy –template-file C:\tmp\template-api-out.yml –stack-name <YOUR STACK NAME>

view raw
gistfile1.txt
hosted with ❤ by GitHub

template-api-out.ymlファイルが作成されていると思います。

このファイルをもとに、aws cloudformation deployコマンドを実行してapi-roleというstackを作成します。

C:\tmp>aws cloudformation deploy –template-file template-api-out.yml –stack-name api-role –region ap-northeast-1 –parameter-overrides Stage=dev ApiRoleName=ApiSampleRole –profile=default –capabilities CAPABILITY_NAMED_IAM
Waiting for changeset to be created..
Waiting for stack create/update to complete
Successfully created/updated stack – api-role

view raw
gistfile1.txt
hosted with ❤ by GitHub

CloudFormationにapi-roleが作成されていることを確認します。

AWS SAM CloudFormationでAPI GatewayのIAMロールをデプロイする方法

IAMロールの確認

IAMロールがApiSampleRoleという名前で作成されているか確認します。

AWS SAM CloudFormationでAPI GatewayのIAMロールをデプロイする方法

テンプレートファイルで指定したポリシーがアタッチされているIAMロールが作成されていることが確認できます。

スタックのエクスポート名

スタックの出力ページの一番右にエクスポート名という欄があります。

このエクスポート名は、他のyamlで!ImportValue エクスポート名で指定することが出来ます。

例えばLambdaデプロイ時にRole: !ImportValue エクスポート名とすることが可能になります。

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA