Fastly ログの AWS IAM のロールの作成

Fastly サービスのログエンドポイントとして Amazon S3 または Amazon Kinesis を追加する前に、Fastly 専用に AWS でアイデンティティおよびアクセスの管理 (IAM) ロールを作成することをお勧めします。Fastly 顧客アカウント ID と Fastly AWS アカウント番号を使用して、アクセスキーとシークレットキーペアのような長期的な資格情報の代わりに一時的な資格情報を使用して、ログ配信用の S3 バケットまたは Kinesis データストリームへのアクセスを Fastly に与える役割を設定できます。

AWS 管理コンソールまたは AWS CLI でこれを行えます。

AWS 管理コンソール経由での IAM ロールの作成

AWS 管理コンソール経由で IAM ロールを作成するには、以下の手順に従ってください。

  1. AWS 管理コンソールにログインして、IAM コンソールを開きます。

  2. Fastly が AWS にオブジェクトを書き込む権限ポリシーを作成します。Create policy をクリックします。

  3. JSON をクリックします。 以下のテンプレートのいずれかをコピー&ペーストし、リソースフィールドの名前を、Fastly がログを書き込む Amazon S3 バケットまたは Kinesis データストリームに置き換えます。

    Amazon S3 template
    json
    1
    2
    3
    4
    5
    6
    7
    8
    {
    "Version": "2012-10-17",
    "Statement": {
    "Effect": "Allow",
    "Action": "s3:PutObject",
    "Resource": "arn:aws:s3:::YourS3BucketName/*"
    }
    }
    Amazon Kinesis template
    json
    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"
    }
    }
  4. Create policy をクリックします。

  5. 信頼と権限ポリシーを添付したロールを作成します。ナビゲーションパネルから Roles を選択し、Create role をクリックします。

  6. Select type of trusted entity については、Another AWS account を選択します。

  7. Account ID には、Fastly AWS アカウント ID (717331877981) を入力します。

  8. Require external ID を選択します。

  9. External ID フィールドに、Fastly 顧客アカウント ID を入力します。

  10. Next: Permissions をクリックします。

  11. 上記で作成した権限ポリシーの隣のチェックボックスを選択します。

  12. Next: Tags をクリックします。

  13. (オプション) キーと値のペアとしてタグを添付することで、ロールにメタデータを追加します。IAM でのタグの使用の詳細については、IAM リソースのタグ付けに関する Amazon のドキュメントを確認してください。

  14. Next: Review をクリックします。以下のフィールドに入力します。

    • Role name フィールドに、ロールの名前を入力します。ロール名は、AWS アカウント内で固有である必要があります。ケース別に区別されていません。他の AWS リソースはロールを参照する可能性があるため、ロールの名前は作成後に編集できません。
    • (オプション) Role description フィールドに、新しいロールの説明を入力します。
  15. ロールを確認し、Create role をクリックします。Roles タブのロールのリストに作成したロールが表示されます。

  16. 手順リージョントークンの有効化に従い、AWS アカウントがリージョント STS エンドポイントを使用してトークンを許可するように設定されていることを確認します。

新しいロールを作成した後、Roles タブからロールを選択して、Role ARN など、ロールに関する詳細を表示します。ログエンドポイントを作成するには、この ARN が必要です。

AWS CLI 経由での IAM ロールの作成

AWS CLI 経由で IAM ロールを作成するには、以下の手順に従ってください。

  1. 以下の点のいずれかを使用して、Fastlyアカウント ID と Fastly AWS アカウント番号を使用して、信頼ポリシーを JSON で作成します。テンプレートをテキストエディタにコピーし、FastlyCustomerAccountID を顧客アカウント ID、Sid をポリシーの名前に置き換えてください。ファイルをファイルシステムに保存します。

    Amazon S3 template
    json
    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"
    }
    }
    Amazon Kinesis template
    json
    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"
    }
    }
  2. Fastly からログを書き込む Amazon Resource Name (ARN) または Kinesis データストリームの S3 バケットを使用して、権限ポリシーを JSON に作成します。テンプレートをテキストエディタにコピーし、リソースフィールドの名前を S3 バケットまたは Kinesis データストリームの名前に置き換えてください。ファイルをファイルシステムに保存します。

    Amazon S3 template
    json
    1
    2
    3
    4
    5
    6
    7
    8
    {
    "Version": "2012-10-17",
    "Statement": {
    "Effect": "Allow",
    "Action": "s3:PutObject",
    "Resource": "arn:aws:s3:::YourS3BucketName/*"
    }
    }
    Amazon Kinesis template
    json
    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"
    }
    }
  3. コマンドラインからロールを作成し、ロールに信頼ポリシーを追加します。YourRoleName をロールの名前に置き換え、file://trust-policy-file.json を信頼ポリシーを作成したファイルの名前と場所に置き換えてください。

    $ 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
    {
    "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 で、ログエンドポイントを作成する際に必要になります。

  4. 権限ポリシーを作成します。YourPolicyName をポリシーの名前に置き換え、file://permission-policy-file.json を信頼ポリシーを作成したファイルの名前と場所に置き換えてください。

    $ 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"
    }
    }
  5. ロールに権限ポリシーを添付します。YourRoleName をロールの名前に置き換え、--policy-arn の後ろの値を権限ポリシーの ARN に置き換えてください。

    $ aws --profile personal iam attach-role-policy --role-name YourRoleName --policy-arn arn:aws:iam::123453306678:policy/AllowLoggingBucketWrites
  6. 手順リージョントークンの有効化に従い、AWS アカウントがリージョント STS エンドポイントを使用してトークンを許可するように設定されていることを確認します。

リージョントークンの有効化

Fastly は、AWS セキュリティ トークン サービス API を使用して、S3 や Kinesis などの AWS エンドポイントにログを書き込みするための一時的な認証情報をリクエストします。トークンは、単一のグローバルエンドポイントまたはリージョナルエンドポイントからリクエストできますが、AWS ではレイテンシの削減と冗長性の改善のためにリージョナル STS エンドポイントの使用を推奨しています。

AWS S3バケットまたは Kinesis ストリームがどこに配置されているかに関係なく、Fastly が使用するすべてのリージョナルエンドポイントを有効化して、最高レベルの冗長性とトークン有効性を提供する必要があります。 例えば、S3バケットが us-west-1 に位置していても、Fastly は別のリージョン (例: us-east-2) からバケットに書き込むトークンを取得できます。

手順AWS リージョンでAWS STS を有効化する手順と非アクティブ化に従って、Fastly がトークンを取得するために使用できるすべての以下のリージョナルエンドポイントをアクティブ化します。

  • 米国東部 (N. Virginia)常にアクティブ: https://sts.us-east-1.amazonaws.com
  • 米国東部 (Ohio): https://sts.us-east-2.amazonaws.com
  • 米国西部 (N. California): https://sts.us-west-1.amazonaws.com
  • 米国西部 (Oregon): https://sts.us-west-2.amazonaws.com

次のステップ

作成した IAM ロールを使用して、ログエンドポイントとして Amazon S3 または Amazon Kinesis を追加します。


翻訳についての注意事項
このガイドは役に立ちましたか?

このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合は、サポートチームまでご連絡ください。このフォームは reCAPTCHA によって保護されており、Google のプライバシーポリシー利用規約が適用されます。