S3 バケットを AWS CloudFormation スタックとして正常にインポートする - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

S3 バケットを AWS CloudFormation スタックとして正常にインポートする

作成者: Ram Kandaswamy (AWS)

概要

Amazon Simple Storage Service (Amazon S3AWS) バケットなどの Amazon Web Services () リソースを使用し、Infrastructure as Code (IaC) アプローチを使用する場合は、リソースを にインポートAWS CloudFormation してスタックとして管理できます。Amazon S3

このパターンでは、S3 バケットを AWS CloudFormation スタックとして正常にインポートする手順を示します。このパターンの方法を使用すると、S3 バケットを 1 回のアクションでインポートした場合に発生する可能性のあるエラーを回避できます。

前提条件と制限

前提条件

アーキテクチャ

CloudFormation テンプレートを使用して S3 バケットをインポートする CloudFormation スタックを作成するワークフロー。

この図表は、次のワークフローを示しています:

  1. ユーザーは JSONまたは YAML形式のAWS CloudFormation テンプレートを作成します。

  2. テンプレートは、S3 バケットをインポートする AWS CloudFormation スタックを作成します。

  3. AWS CloudFormation スタックは、テンプレートで指定した S3 バケットを管理します。

テクノロジースタック

  • AWS CloudFormation

  • AWS Identity and Access Management (IAM)

  • AWS KMS

  • Amazon S3

ツール

  • AWS CloudFormation – AWS CloudFormation は、AWSインフラストラクチャのデプロイを予測どおりに繰り返し作成およびプロビジョニングするのに役立ちます。

  • AWS Identity and Access Management (IAM) – は、 サービスへのアクセスを安全に制御するためのウェブAWSサービスIAMです。

  • AWS KMS – AWS Key Management Service (AWS KMS) は、クラウド向けにスケーリングされた暗号化およびキー管理サービスです。

  • Amazon S3」— Amazon Simple Storage Service (Amazon S3)は、インターネット用のストレージです。

エピック

タスク説明必要なスキル

S3 バケットとKMSキーをインポートするテンプレートを作成します。

ローカルコンピュータで、次のサンプルテンプレートを使用して S3 バケットとKMSキーをインポートするテンプレートを作成します。

AWSTemplateFormatVersion: 2010-09-09 Parameters: bucketName: Type: String Resources: S3Bucket: Type: 'AWS::S3::Bucket' DeletionPolicy: Retain Properties: BucketName: !Ref bucketName BucketEncryption: ServerSideEncryptionConfiguration: - ServerSideEncryptionByDefault: SSEAlgorithm: 'aws:kms' KMSMasterKeyID: !GetAtt - KMSS3Encryption - Arn KMSS3Encryption: Type: 'AWS::KMS::Key' DeletionPolicy: Retain Properties: Enabled: true KeyPolicy: !Sub |- { "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::${AWS::AccountId}:root"] }, "Action": "kms:*", "Resource": "*" } } ] } EnableKeyRotation: true
AWS DevOps

スタックを作成します。

  1. AWS マネジメントコンソールにサインインし、AWS CloudFormation コンソールを開き、スタックの表示スタックの作成既存のリソース (リソースのインポート) を選択します。

  2. [テンプレートファイルをアップロード] を選択し、先ほど作成したテンプレートファイルをアップロードします。

  3. スタックの名前を入力し、必要に応じて残りのオプションを設定します。

  4. [スタックの作成] を選択し、スタックのステータスが IMPORT_COMPLETE に変わるのを待ちます。

AWS DevOps

KMS キーエイリアスを作成します。

  1. AWS CloudFormation コンソールで、 スタックを選択し、前に作成したスタックの名前を選択し、テンプレートペインを選択して、デザイナーで表示を選択します。

  2. テンプレートの Resource セクションに次のスニペットを追加し、[スタックを作成] を選択してウィザードを完了します。

KMSS3EncryptionAlias: Type: 'AWS::KMS::Alias' DeletionPolicy: Retain Properties: AliasName: alias/S3BucketKey TargetKeyId: !Ref KMSS3Encryption

詳細については、 AWS CloudFormation ドキュメントの「 AWS CloudFormation スタックの更新」を参照してください。 

AWS DevOps

S3 バケットポリシーを含むようにスタックを更新する。

  1. AWS CloudFormation コンソールで、 スタックを選択し、前に作成したスタックの名前を選択し、テンプレートペインを選択して、デザイナーで表示を選択します。

  2. テンプレートの Resource セクションに次のスニペットを追加し、[スタックを作成] を選択してウィザードを完了します。

S3BucketPolicy: Type: 'AWS::S3::BucketPolicy' Properties: Bucket: !Ref S3Bucket PolicyDocument: !Sub |- { "Version": "2008-10-17", "Id": "restricthttp", "Statement": [ { "Sid": "denyhttp", "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": "s3:*", "Resource": ["arn:aws:s3:::${S3Bucket}","arn:aws:s3:::${S3Bucket}/*"], "Condition": { "Bool": { "aws:SecureTransport": "false" } } } ] }
注記

この S3 バケットポリシーには、安全でないAPI呼び出しを制限する拒否ステートメントがあります。 

AWS DevOps

キーポリシーを更新します。

  1. AWS CloudFormation コンソールで、 スタックを選択し、前に作成したスタックの名前を選択し、テンプレートペインを選択して、デザイナーで表示を選択します。

  2. テンプレートのKMSリソースを変更して、管理者がキーを管理できるようにするKMSキーポリシーを含めます。

  3. [スタックの作成] を選択し、[次へ] を選択して、要件に従ってウィザードを完了します。

詳細については、 AWSKMSドキュメントの「 のキーポリシー AWS KMS」を参照してください。

AWS 管理者

リソースレベルのタグを追加します。

  1. AWS CloudFormation コンソールで、 スタックを選択し、前に作成したスタックの名前を選択し、テンプレートペインを選択して、デザイナーで表示を選択します。

  2. テンプレートの Amazon S3 リソース Properties セクションに次のスニペットを追加し、[スタックを作成] を選択してウィザードを完了します。

Tags: - Key: createdBy Value: Cloudformation
AWS DevOps

関連リソース

添付ファイル

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「attachment.zip