Fastly ログの AWS IAM のロールの作成
最終更新日 2021-03-16
Fastly サービスのログエンドポイントとして Amazon S3 または Amazon Kinesis を追加する前に、Fastly 専用に AWS でアイデンティティおよびアクセスの管理 (IAM) ロールを作成することをお勧めします。Fastly 顧客アカウント ID と Fastly AWS アカウント番号を使用して、アクセスキーとシークレットキーペアのような長期的な資格情報の代わりに一時的な資格情報を使用して、ログ配信用の S3 バケットまたは Kinesis データストリームへのアクセスを Fastly に与える役割を設定できます。
AWS 管理コンソールまたは AWS CLI でこれを行えます。
AWS 管理コンソール経由での IAM ロールの作成
AWS 管理コンソール経由で IAM ロールを作成するには、以下の手順に従ってください。
-
AWS 管理コンソールにログインして、IAM コンソールを開きます。
-
Fastly が AWS にオブジェクトを書き込む権限ポリシーを作成します。Create policy をクリックします。Create policy ウィンドウが表示されます。
-
JSON タブを選択します。以下のテンプレートのいずれかをコピー&ペーストし、リソースフィールドの名前を、Fastly がログを書き込む Amazon S3 バケットまたは Kinesis データストリームに置き換えます。
1 2 3 4 5 6 7 8
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::YourS3BucketName/*" } }
1 2 3 4 5 6 7 8 9 10 11
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kinesis:PutRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:::YourKinesisStreamName" } }
-
Create policy をクリックします。Policies タブのリストに新しいポリシーが表示されます。
-
信頼と権限ポリシーを添付したロールを作成します。ナビゲーションパネルから Roles を選択し、Create role をクリックします。Create role ウィンドウが表示されます。
-
Select type of trusted entity については、Another AWS account を選択します。
-
Account ID には、Fastly AWS アカウント ID (
717331877981
) を入力します。 -
Require external ID を選択します。
-
External ID フィールドに、Fastly 顧客アカウント ID を入力します。
-
Next: Permissions をクリックします。
-
上記で作成した権限ポリシーの隣のチェックボックスを選択します。
-
Next: Tags をクリックします。
-
キー値のペアにタグを追加することで、ロールにメタデータを追加できます。IAM でのタグの使用の詳細については、IAM リソースのタグ付けに関する Amazon のドキュメントをご覧ください。
- Next: Review をクリックします。以下のフィールドに入力します。
- Role name フィールドに、ロールの名前を入力します。ロール名は、AWS アカウント内で固有である必要があります。ケース別に区別されていません。他の AWS リソースはロールを参照する可能性があるため、ロールの名前は作成後に編集できません。
- オプションとして、Role description フィールドに、新しいロールの説明を入力します。
- ロールを確認し、Create role をクリックします。Roes タブのロールのリストに作成したロールが表示されます。
新しいロールを作成した後、Roles タブからロールを選択して、Role ARN など、ロールに関する詳細を表示します。ログエンドポイントを作成するには、この ARN が必要です。
AWS CLI 経由での IAM ロールの作成
AWS CLI 経由で IAM ロールを作成するには、以下の手順に従ってください。
-
以下の点のいずれかを使用して、Fastlyアカウント ID と Fastly AWS アカウント番号を使用して、信頼ポリシーを JSON で作成します。テンプレートをテキストエディタにコピーし、
FastlyCustomerAccountID
を顧客アカウント ID、Sid
をポリシーの名前に置き換えてください。ファイルをファイルシステムに保存します。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
{ "Version": "2012-10-17", "Statement": { "Condition": { "StringEquals": { "sts:ExternalId": "FastlyCustomerAccountID" } }, "Action": "sts:AssumeRole", "Principal": { "AWS": "717331877981" }, "Effect": "Allow", "Sid": "S3LoggingTrustPolicy" } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
{ "Version": "2012-10-17", "Statement": { "Condition": { "StringEquals": { "sts:ExternalId": "FastlyCustomerAccountID" } }, "Action": "sts:AssumeRole", "Principal": { "AWS": "717331877981" }, "Effect": "Allow", "Sid": "KinesisLoggingTrustPolicy" } }
-
Fastly からログを書き込む Amazon Resource Name (ARN) または Kinesis データストリームの S3 バケットを使用して、権限ポリシーを JSON に作成します。テンプレートをテキストエディタにコピーし、リソースフィールドの名前を S3 バケットまたは Kinesis データストリームの名前に置き換えてください。ファイルをファイルシステムに保存します。
1 2 3 4 5 6 7 8
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::YourS3BucketName/*" } }
1 2 3 4 5 6 7 8 9 10 11
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kinesis:PutRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:::YourKinesisStreamName" } }
-
コマンドラインからロールを作成し、ロールに信頼ポリシーを追加します。
YourRoleName
をロールの名前に置き換え、file://trust-policy-file.json
を信頼ポリシーを作成したファイルの名と場所に置き換えてください。1
$ aws --profile personal iam create-role --role-name YourRoleName --assume-role-policy-document file://trust-policy-file.json
このコマンドの正しいレスポンスを以下に示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
{ "Role": { "Path": "/", "RoleName": "YourRoleName", "RoleId": "ABCD1234ZHHQGKDRUMGFH", "Arn": "arn:aws:iam::AmazonResourceName:role/YourRoleName", "CreateDate": "2021-03-19T23:14:27+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": { "Condition": { "StringEquals": { "sts:ExternalId": "abc12345-defg-6789-hijk-lmno10111213" } }, "Action": "sts:AssumeRole", "Principal": { "AWS": "717331877981" }, "Effect": "Allow", "Sid": "RoleForS3" } } } }
注意Arn
フィールドの値に注意してください。これはロールの ARN です。これは、ログエンドポイントの作成に必要です。 -
権限ポリシーを作成します。
YourPolicyName
をポリシーの名前に置き換え、file://permission-policy-file.json
を信頼ポリシーを作成したファイルの名前と場所に置き換えてください。1
$ aws --profile personal iam create-policy --policy-name YourPolicyName --policy-document file://permissions-policy-file.json
このコマンドの正しいレスポンスを以下に示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
{ "Policy": { "PolicyName": "YourPolicyName", "PolicyId": "ABCDJH5Z123CTIKFWXYZ", "Arn": "arn:aws:iam::AmazonResourceName:policy/YourPolicyName", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "PermissionsBoundaryUsageCount": 0, "IsAttachable": true, "CreateDate": "2021-03-19T23:17:42+00:00", "UpdateDate": "2021-03-19T23:17:42+00:00" } }
-
ロールに権限ポリシーを添付します。
YourRoleName
をロールの名前に置き換え、--policy-arn
の後ろの値を権限ポリシーの ARN に置き換えてください。1
$ aws --profile personal iam attach-role-policy --role-name YourRoleName --policy-arn arn:aws:iam::123453306678:policy/AllowLoggingBucketWrites