SAM テンプレートに既存リソースをインポートする手順 - IAM Role 編 -


以前は 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

あとは同様に手順を進めます。

以上
参考になれば幸いです。

SAM テンプレートに既存リソースをインポートする手順 - IAM Role 編 -

https://kenzo0107.github.io/2023/06/19/2023-06-20-aws-sam-import-iam-role/

Author

Kenzo Tanaka

Posted on

2023-06-20

Licensed under

コメント