AWS CloudFormation StackSets のためのセルフマネージドスタックインポート - AWS CloudFormation

AWS CloudFormation StackSets のためのセルフマネージドスタックインポート

AWS CloudFormation スタックのインポートオペレーションでは、既存のスタックを新規または既存のスタックセットにインポートできるため、既存のスタックを 1 回のオペレーションでスタックセットに移行できます。StackSets はスタックの機能を拡張するため、1 回のオペレーションで複数のアカウントとリージョンにまたがるスタックを作成、更新、削除できます。

例えば、複数のアカウントにまたがって管理者 AWS Identity and Access Management (IAM) ロールを指定するスタックがある場合、そのスタックをスタックセットにインポートすることができます。スタックインポートを使用することで、それらのリソースを削除して再作成することなく、ダウンタイムや停止を回避できます。スタックがスタックセットにインポートされると、元のスタックは新しく生成されたスタックセットのスタックインスタンスになります。

Stack インポートのセルフマネージド型要件

Stack のインポートの要件 セクションに加えて、セルフマネージド型スタックのインポートには以下が必要です。

  • スタックのインポートオペレーションは、セルフマネージド型のアクセス許可を持つスタックセットの作成をサポートします。

  • スタックのインポートオペレーションには、スタックセットを作成する管理者アカウントと、スタックを含むターゲットアカウントが必要です。

  • ターゲットアカウントには、スタック ID または ARN の入力で GetTemplate オペレーションを使用する権限が必要です。そのため、管理者アカウントには AWSCloudFormationStackSetsAdminstration または AWSCloudFormationStackSetsExectionRole アクセス許可を付与する必要があります。

スタックを新しいスタックセットにインポートする。

AWS Management Console を使用して、スタックを新しいスタックセットにインポートする。

スタックをスタックセットにインポートするには、インポートするリソースを含むスタックを特定します。

  1. AWS Management Console にサインインし、AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation) を開きます。

  2. ナビゲーションペインから [StackSets] を選択します。

  3. [StackSets] ページの上部で [Create StackSet (StackSet の作成)] を選択します。

  4. [Choose a template] (テンプレートの選択) ページで、次のいずれかのオプションでテンプレートを指定し、[Next](次へ) を選択します。

    • Amazon S3 URL を選択し、テキストボックスでテンプレートの URL を指定します。

    • [Upload a template file] (テンプレートファイルのアップロード) を選択し、テンプレートを参照します。

    • [From stack ID] (スタック ID から) を選択し、スタック ID を入力します。

  5. リポジトリの [Specify StackSet details] (StackSet の詳細の指定) ページで、作成するスタックセットの名前を入力し、[Next] (次へ) を選択します。

    (オプション) スタックセットの説明を入力します。

  6. [Configure stack options] (スタックオプションの設定) ページで、選択内容を確認し、[Next] (次へ) を選択します。

  7. [Set deployment options] (デプロイオプションの設定) ページで、[Import stacks to stack set] (スタックをスタックセットにインポートする) を選択します。

  8. インポートするスタックのスタック ID を [Stacks to import] (インポートするスタック) フィールドに入力します。例えば、arn:123456789101:us-east-1:StackToImport と指定します。

    (オプション) [Add another stack ID] (別のスタック ID) を追加するを選択し、インポートする別のスタックのスタック ID を入力します。スタックのインポートオペレーションごとに最大 10 個のスタックを追加できます。

  9. デプロイのオプションを確認し、[Next] (次へ) を選択します。

  10. [確認] ページで、設定とスタックセットのプロパティを確認します。スタックをスタックセットにインポートする準備ができたら、[Submit] (送信) を選択します。

結果: インポートされたスタックは、指定されたスタックセットのスタックインスタンスになりました。スタックインポートステータスの詳細については、「StackSets ステータスコード」を参照してください。

自己管理型スタックを既存のスタックセットにインポートする

AWS Management Console を使用して、スタックを既存のスタックセットにインポートする。

既存のスタックをスタックセットにインポートするには、インポートするリソースを含むスタックを特定します。

  1. AWS Management Console にサインインし、AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation) を開きます。

  2. ナビゲーションペインから [StackSets] を選択します。

  3. StackSets ページで、スタックをインポートするスタックセットを選択します。

  4. スタックセットを選択した状態で、[Actions] (アクション) メニューから [Add stacks to StackSet] (スタックを StackSet に追加) を選択します。

  5. [Set deployment options] (デプロイオプションの設定) ページで、[Import stacks to stack set] (スタックをスタックセットにインポートする) を選択し、インポートするスタックのスタック ID を [Stacks to import] (インポートするスタックフィールド) に入力します。例えば、arn:123456789101:us-east-1:StackToImport と指定します。

    (オプション) [Add another stack ID] (別のスタック ID) を追加するを選択し、インポートする別のスタックのスタック ID を入力します。スタックのインポートオペレーションごとに最大 10 個のスタックを追加できます。

  6. [Next] を選択します。

  7. [Specify overrides] (オーバーライドを指定) ページで、選択内容を確認し、[Next] (次へ) を選択します。

  8. [確認] ページで、設定とスタックセットのプロパティを確認します。スタックセットを作成する準備ができたら、[Submit] (送信) を選択します。

結果: インポートされたスタックは、指定されたスタックセットのスタックインスタンスになりました。スタックインポートステータスの詳細については、「StackSets ステータスコード」を参照してください。

スタックをスタックセットにインポートする (AWS CLI)

スタックをスタックセットにインポートする

既存のスタックをスタックセットにインポートするには、インポートするリソースを含むスタックを特定します。この例では、インポートするスタックは、arn:123456789101:us-east-1:StackToImport です。

  1. インポートする CloudFormation スタックの完全な ARN を指定して、スタック ID からスタックセットを作成します。

    aws cloudformation create-stack-set \ --stack-id "arn:aws:cloudformation:us-east-1:123456789012:stack/StackToImport/f449b250-b969-11e0-a185-5081d0136786" \ --stack-set-name "SingleStackSetName" \ --permission-model "SELF_MANAGED" \ --administration-role-arn "arn:aws:iam::123456789012:role/AWSCloudFormationStackSetAdministrationRole" \ --execution-role-name "AWSCloudFormationStackSetExecutionRole"
  2. 指定したスタックをスタックセットにインポートします。

    aws cloudformation import-stacks-to-stack-set \ --stack-ids "arn:aws:cloudformation:us-east-1:123456789012:stack/StackToImport/f449b250-b969-11e0-a185-5081d0136786" \ --stack-set "SingleStackSetName" \ --permission-model SELF_MANAGED \ --administration-role-arn "arn:aws:iam::123456789012:role/AWSCloudFormationStackSetAdministrationRole" \ --execution-role-name "AWSCloudFormationStackSetExecutionRole"
  3. インポートしたスタックを他のリージョンやアカウントに複製します。

    aws cloudformation create-stack-instances \ --stack-set-name "StackSetToWhichStackimported" \ --accounts "123556789101" \ --regions "us-east-1"

スタックをスタックセットにインポートする

既存のスタックをスタックセットにインポートするには、インポートするリソースを含むスタックを特定します。この例では、インポートするスタックは、arn:aws:cloudformation:123456789101:us-east-1:stack/StackToImport1/f449b250-b969-11e0-a185-5081d0136786arn:aws:cloudformation:123456789101:us-east-1:stack/StackToImport2/f449b250-b969-11e0-a185-5081d0136786 です。

  1. スタック ID からスタックセットを作成します。

    aws cloudformation create-stack-set \ --stack-id "arn:123456789101:us-east-1:StackToImport" \ --stack-set-name "StackSetName" \ --permission-model "SELF_MANAGED" \ --administration-role-arn "arn:aws:iam::123456789012:role/AWSCloudFormationStackSetAdministrationRole" \ --execution-role-name "AWSCloudFormationStackSetExecutionRole"
  2. 指定したスタックをスタックセットにインポートします。

    aws cloudformation import-stacks-to-stackset --stack-ids "arn:aws:cloudformation:123456789101:us-east-1:stack/StackToImport1/f449b250-b969-11e0-a185-5081d0136786, arn:aws:cloudformation:123456789101:us-east-1:stack/StackToImport2/f449b250-b969-11e0-a185-5081d0136786" \ --stack-set "StackSetName" --permission-model SELF_MANAGED \ --administration-role-arn "arn:aws:iam::123456789012:role/AWSCloudFormationStackSetAdministrationRole" \ --execution-role-name "AWSCloudFormationStackSetExecutionRole"
  3. インポートしたスタックを他のリージョンやアカウントに複製します。

    aws cloudformation create-stack-instances \ --stack-set-name "StackSetName" \ --accounts "123456789012" \ --regions "us-east-1"