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.
- Alibaba Cloud アカウントを使用して RAM コンソールにログインします。
- OOSAutoBindTagという名前のカスタムポリシーを作成します。 詳細については、「カスタマイズポリシーの作成」をご参照ください。
次のポリシーが作成されます。
注 このポリシーはECSインスタンスを対象とし、ポリシーの権限はecs:DescribeInstances
に設定されています。 ビジネスニーズに基づいて権限を設定できます。 たとえば、複数のセキュリティグループにタグを追加する場合は、ecs:DescribeInstances
をecs:DescribeSecurityGroups
に置き換えることができます。
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:DescribeInstances",
"ecs:TagResources"
],
"Resource": "*",
"Effect":"Allow"
}
]
}
- OOSServiceRole RAMロールを作成します。
- カスタムポリシーをRAMロールにアタッチします。
詳細については、「
RAM ロールへの権限付与」をご参照ください。 In this step, the OOSAutoBindTag custom policy is attached to the OOSServiceRole
RAM role.
- AliyunOSSFullAccessシステムポリシーをOOSServiceRole RAMロールにアタッチします。
ステップ2: 一度にリソースにタグをバインドする
- Operation Orchestration Serviceコンソールにログインします。
- 上部のナビゲーションバーで、リージョンを選択します。
- 左側のナビゲーションウィンドウで、[マイテンプレート] をクリックします。
- カスタムテンプレートを作成します。
- [マイテンプレート] ページで、[テンプレートの作成] をクリックします。
- [テンプレートの作成] ダイアログボックスで、[空のテンプレート] タブをクリックし、[空のテンプレート] を選択し、[OK] をクリックします。
- [テンプレートの作成] ページで、[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で作成したOOSAutoBindTagカスタムテンプレートを見つけ、[操作] 列の [実行の作成] をクリックします。
- デフォルト設定を維持するか、実行モードを再選択して、[次へ: パラメーター設定] をクリックします。
- [パラメーター設定] ステップで、パラメーターを設定し、[次へ: OK] をクリックします。
この例では、次のパラメーターが設定されています。
- タグ:
owner:zhangsan
タグを選択します。
- regionId:
cn-shanghai
など、インスタンスのリージョンを選択します。 詳細については、「リージョンとゾーン」をご参照ください。
- oosAssumeRole: RAMロールOOSServiceRoleを使用します。
- OKステップで、[実行の作成] をクリックします。
- 実行の詳細ページで、[詳細表示] タブをクリックします。
- ページの右側にある [実行結果] タブをクリックします。
実行結果を表示し、
owner:zhangsan
タグが選択したリージョン内のすべてのECSインスタンスにバインドされていることを示します。
実行ステータスにFailedが表示されている場合は、実行ステータスと実行ログの情報を表示して調整できます。