以前は CloudWatch LogGroup をインポートしましたが
今回は IAM Role をインポートの設定例です。
基本手順は CloudWatch LogGroup と同様ですが、
異なる部分だけ記載します。
手順
CloudFormation のテンプレート取得し template.yml にインポートしたいリソースを追記
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| ... Resources: ...
CWLogRole: DeletionPolicy: Retain Type: AWS::IAM::Role Properties: RoleName: xxx-Bot-Stack AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: apigateway.amazonaws.com Action: sts:AssumeRole Description: Allows API Gateway to push logs to CloudWatch Logs. ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs
|
API Gateway のアクセスログ管理用ロググループへログを配信する IAM Role をインポートします。
import.json にインポートしたいリソースを記載
1 2 3 4 5 6 7 8 9
| [ { "ResourceType": "AWS::IAM::Role", "LogicalResourceId": "CWLogRole", "ResourceIdentifier": { "RoleName":"xxx-Bot-Stack" } } ]
|
import.json にインポート対象のリソースを追加し
先程の template.yml と同じディレクトリに保存します。
1 2 3 4 5 6 7
| $ aws cloudformation create-change-set \ --stack-name xxx-Bot-Stack \ --change-set-name import-cwlogs-role \ --resources-to-import file://import.json \ --change-set-type IMPORT \ --template-body file://template.yml \ --capabilities CAPABILITY_NAMED_IAM
|
capabilities は CAPABILITY_NAMED_IAM にする必要があります。
IAM Role リソースに独自の命名をしたい場合に利用します。
参考: https://docs.aws.amazon.com/ja_jp/serverlessrepo/latest/devguide/acknowledging-application-capabilities.html
あとは同様に手順を進めます。
以上
参考になれば幸いです。