Operation Orchestration Service (OOS) を使用して、同じリージョン内の複数のECSリソースにタグをバインドし、タグに基づいてこれらのECSリソースのアクセス許可を制御できます。

このタスクについて

OOSカスタムテンプレートを使用して、ECSおよびその他のAlibaba Cloudサービスのリソースにタグをバインドできます。 タグをサポートするサービスの詳細については、「制限」をご参照ください。 このトピックでは、owner:zhangsanタグを同じリージョン内のECSインスタンスにバインドするカスタムテンプレートがOOSで作成されます。

タグをバインドするには、リソースが同じリージョン内にある必要があります。

ステップ1: カスタムポリシーとRAMロールを作成する

Create a RAM role named OOSServiceRole for OOS and attach permissions to the role.

  1. Alibaba Cloud アカウントを使用して RAM コンソールにログインします。
  2. OOSAutoBindTagという名前のカスタムポリシーを作成します。 詳細については、「カスタマイズポリシーの作成」をご参照ください。
    次のポリシーが作成されます。
    このポリシーはECSインスタンスを対象とし、ポリシーの権限はecs:DescribeInstancesに設定されています。 ビジネスニーズに基づいて権限を設定できます。 たとえば、複数のセキュリティグループにタグを追加する場合は、ecs:DescribeInstancesecs:DescribeSecurityGroupsに置き換えることができます。
    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "ecs:DescribeInstances",
                    "ecs:TagResources"
                ],
                "Resource": "*",
                "Effect":"Allow"
            }
        ]
    }
  3. OOSServiceRole RAMロールを作成します。
    詳細については、「信頼できる Alibaba Cloud サービス用の RAM ロールの作成」をご参照ください。
  4. カスタムポリシーをRAMロールにアタッチします。
    詳細については、「RAM ロールへの権限付与」をご参照ください。 In this step, the OOSAutoBindTag custom policy is attached to the OOSServiceRole RAM role.
  5. AliyunOSSFullAccessシステムポリシーをOOSServiceRole RAMロールにアタッチします。

ステップ2: 一度にリソースにタグをバインドする

  1. Operation Orchestration Serviceコンソールにログインします。
  2. 上部のナビゲーションバーで、リージョンを選択します。
  3. 左側のナビゲーションウィンドウで、[マイテンプレート] をクリックします。
  4. カスタムテンプレートを作成します。
    1. [マイテンプレート] ページで、[テンプレートの作成] をクリックします。
    2. [テンプレートの作成] ダイアログボックスで、[空のテンプレート] タブをクリックし、[空のテンプレート] を選択し、[OK] をクリックします。
    3. [テンプレートの作成] ページで、[YAML] タブをクリックしてテンプレートを編集します。 ページの右上隅にある [テンプレート名] フィールドにOOSAutoBindTagと入力します。 テンプレートを編集したら、[テンプレートの作成] をクリックします。

      以下のコードを例として使用します。

      FormatVersion: OOS-2019-06-01
      説明: 指定されたタグのないタグリソース
      パラメータ:
        タグ:
          タイプ: Json
          説明
            en: ECSインスタンスを選択するためのタグ。
            zh-cn:
          AssociationProperty: タグ
        regionId:
          データ型:Strig
          説明
            en: ECSインスタンスを選択するリージョンです。
            zh-cn:
        OOSAssumeRole:
          説明
            en: OOSが引き受けるRAMロール。
            zh-cn:
          データ型:Strig
          デフォルト: OOSServiceRole
      RamRole: OOSServiceRole
      タスク:
        -名前: getInstancesByTags
          アクション: 'ACS::ExecuteAPI'
          説明:''
          プロパティ:
            サービス: ECS
            API: DescribeInstances
            パラメーター
              タグ: '{{Tags}}'
              RegionId: '{{ regionId }}'
          Outputs:
            InstanceIds:
              タイプ: リスト
              ValueSelector: 'Instances.Instance[].InstanceId'
        -名前: getAllInstances
          アクション: 'ACS::ExecuteAPI'
          説明:''
          プロパティ:
            サービス: ECS
            API: DescribeInstances
            パラメーター
              RegionId: '{{regionId}}'
          Outputs:
            InstanceIds:
              タイプ: リスト
              ValueSelector: 'Instances.Instance[].InstanceId'
        -名前: TagResources_ECS_Instances
          アクション: 'ACS::ExecuteAPI'
          説明
            zh-cn:
            en: 'タグecsインスタンス。指定されたタグはありません。
          プロパティ:
            サービス: ECS
            API: TagResources
            パラメーター
              タグ: '{{Tags}}'
              RegionId: '{{regionId}}'
              ResourceType: インスタンス
              ResourceIds:
                -'{{ACS::TaskLoopItem}}'
          ループ:
            MaxErrors: 100%
            並行性: 20
            アイテム:
              'Fn:: 違い ':
                -'{{ getAllInstances.InstanceIds }}'
                -'{{ getInstancesByTags.InstanceIds }}'
      出力:
        InstanceIds:
          タイプ: リスト
          値:
            'Fn:: 違い ':
              -'{{ getAllInstances.InstanceIds }}'
              -'{{ getInstancesByTags.InstanceIds }}'

      次のセクションでは、パラメーターについて説明します。

      • tags: ECSインスタンスにバインドされたタグ。
      • regionId: 選択したタグがバインドされているECSインスタンスのリージョンID。
      • OOSAssumeRole: OOSによって使用されるRAMロール。

      次のセクションでは、権限について説明します。

      • DescribeInstances: ソースタグに基づいてリソースをフィルタリングします。
      • TagResources: 指定されたリソースのタグを作成またはバインドします。
  5. カスタムテンプレートを実行します。
    1. 左側のナビゲーションウィンドウで、[マイテンプレート] をクリックします。 [マイテンプレート] ページで、手順5で作成したOOSAutoBindTagカスタムテンプレートを見つけ、[操作] 列の [実行の作成] をクリックします。
      1
    2. デフォルト設定を維持するか、実行モードを再選択して、[次へ: パラメーター設定] をクリックします。
    3. [パラメーター設定] ステップで、パラメーターを設定し、[次へ: OK] をクリックします。

      この例では、次のパラメーターが設定されています。

      1
      • タグ: owner:zhangsanタグを選択します。
      • regionId: cn-shanghaiなど、インスタンスのリージョンを選択します。 詳細については、「リージョンとゾーン」をご参照ください。
      • oosAssumeRole: RAMロールOOSServiceRoleを使用します。
    4. OKステップで、[実行の作成] をクリックします。
    5. 実行の詳細ページで、[詳細表示] タブをクリックします。
    6. ページの右側にある [実行結果] タブをクリックします。
    実行結果を表示し、owner:zhangsanタグが選択したリージョン内のすべてのECSインスタンスにバインドされていることを示します。1

    実行ステータスにFailedが表示されている場合は、実行ステータスと実行ログの情報を表示して調整できます。