すべてのプロダクト
Search
ドキュメントセンター

CloudOps Orchestration Service:ACS-ECS-UpdateImage

最終更新日:Jan 17, 2025

テンプレート名

ACS-ECS-UpdateImage

今すぐ実行

テンプレートの説明

コマンドを実行して、既存の Elastic Compute Service (ECS) イメージを更新することにより、新しい ECS イメージを作成します。これは、アプリケーションのインストールやシステム構成の変更など、ECS イメージを一括で更新および管理する必要があるシナリオに適用されます。構成プロセス中に、次の情報を提供する必要があります。イメージが作成および更新されるリージョンである regionId と、元の ECS イメージ ID である sourceImageId。作成される ECS イメージの名前である targetImageName、インスタンスタイプである instanceType、更新タイプである updateType など、以下のパラメーターを変更できます。テンプレートが実行されると、作成されたイメージの ID が返され、イメージの検証と管理が容易になります。

テンプレートタイプ

自動化

所有者

Alibaba Cloud

入力パラメーター

パラメーター

説明

タイプ

必須

デフォルト値

制限

sourceImageId

ソースイメージの ID。

String

はい

instanceType

ECS インスタンスのインスタンスタイプ。

String

はい

regionId

リージョン ID。

String

いいえ

{{ ACS::RegionId }}

zoneId

vSwitch がデプロイされているゾーン。

String

いいえ

""

targetImageName

新しいイメージの名前。

String

いいえ

UpdateImage_from_{{sourceImageId}}on{{ACS::ExecutionId}}

whetherCreateVpc

仮想プライベートクラウド (VPC) を作成するかどうかを指定します。

Boolean

いいえ

False

vpcCidrBlock

VPC の IPv4 CIDR ブロック。

String

いいえ

192.168.0.0/16

vSwitchCidrBlock

vSwitch の CIDR ブロック。

String

いいえ

192.168.1.0/24

securityGroupId

セキュリティグループ ID。

String

いいえ

""

vSwitchId

vSwitch ID。

String

いいえ

""

internetMaxBandwidthOut

パブリック帯域幅。

Number

いいえ

0

ramRoleName

ECS インスタンスに割り当てられている Resource Access Management (RAM) ロール。

String

いいえ

""

systemDiskCategory

システムディスクのカテゴリ。

String

いいえ

cloud_essd

commandType

クラウドアシスタントコマンドのタイプ。

String

いいえ

RunShellScript

tags

イメージのタグ。

Json

いいえ

[]

commandContent

ECS インスタンスで実行されるクラウドアシスタントコマンド。

String

いいえ

echo hello

timeout

タイムアウト期間。

Number

いいえ

600

updateType

イメージの更新に使用されるメソッド。

String

いいえ

RunCommand

packageName

インストールされるソフトウェアパッケージの名前。

String

いいえ

""

packageVersion

インストールされるソフトウェアパッケージのバージョン。

String

いいえ

""

parameters

コマンドのパラメーター。

Json

いいえ

{}

OOSAssumeRole

CloudOps Orchestration Service (OOS) によって引き受けられる RAM ロール。

String

いいえ

""

出力パラメーター

パラメーター

説明

タイプ

imageId

String

テンプレートを実行するために必要な権限ポリシー

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "ecs:CreateImage",
                "ecs:DeleteInstance",
                "ecs:DescribeCloudAssistantStatus",
                "ecs:DescribeImages",
                "ecs:DescribeInstances",
                "ecs:DescribeInvocationResults",
                "ecs:DescribeInvocations",
                "ecs:InstallCloudAssistant",
                "ecs:RebootInstance",
                "ecs:RunCommand",
                "ecs:RunInstances",
                "ecs:StopInstance"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "ros:CreateStack",
                "ros:DeleteStack",
                "ros:GetStack"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "oos:GetTemplate",
                "oos:UpdateInstancePackageState"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "oss:GetObject"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

参照

詳細については、GitHub の ACS-ECS-UpdateImage.yml をご参照ください。

テンプレートコンテンツ

FormatVersion: OOS-2019-06-01
Description:
  en:   en: 'Update an existing ECS image by running commands and create a new ECS image. This is applicable to scenarios requiring batch updates and management of ECS images, such as software installation and system configuration changes. During configuration, users need to provide the following required parameters: Region ID (regionId), which specifies the region where the image update and creation operations occur, and Source Image ID (sourceImageId), which identifies the original ECS image that needs updating. Additional parameters that can be modified from their default values include the following: Target Image Name (targetImageName) for naming the newly created ECS image, Instance Type (instanceType) for the type of instance to install and configure the new image on, and Update Type (updateType), which can be selected to either run commands or install packages. Upon execution, the template will return the ID of the newly created image, facilitating the verification and management of the created ECS image.'
  zh-cn: 中国語の説明
  name-en: Update Image
  name-zh-cn: 中国語の説明
  categories:
    - image_manage
    - application_manage
Parameters:
  regionId:
    Type: String
    Label:
      en: RegionId
      zh-cn: 中国語の説明
    AssociationProperty: RegionId
    Default: '{{ ACS::RegionId }}'
  zoneId:
    Type: String
    Label:
      en: VSwitch Availability Zone
      zh-cn: 中国語の説明
    Default: ''
    AssociationProperty: ALIYUN::ECS::Instance::ZoneId
    AssociationPropertyMetadata:
      RegionId: regionId
  targetImageName:
    Label:
      en: TargetImageName
      zh-cn: 中国語の説明
    Type: String
    Description:
      en: <p class="p">注:</p> <ul class="ul"> <li class="li">長さは 2 ~ 128 の英数字または中国語の文字です</li> <li class="li"><font color='red'>大文字または小文字または中国語で始める必要があります。http:// および https:// は使用できません。</font></li> <li class="li">数字、コロン(:)、アンダースコア(_)、またはダッシュ(-)を含めることができます。</li> </ul>
      zh-cn: 中国語の説明 </li> </ul>
    Default: 'UpdateImage_from_{{sourceImageId}}_on_{{ACS::ExecutionId}}'
  sourceImageId:
    Label:
      en: SourceImageId
      zh-cn: 中国語の説明
    Type: String
    AssociationProperty: 'ALIYUN::ECS::Image::ImageId'
    AssociationPropertyMetadata:
      RegionId: regionId
      ImageOwnerAlias:
        - self
  instanceType:
    Label:
      en: InstanceType
      zh-cn: 中国語の説明
    Type: String
    AssociationProperty: 'ALIYUN::ECS::Instance::InstanceType'
    AssociationPropertyMetadata:
      RegionId: regionId
      ZoneId: zoneId
  whetherCreateVpc:
    Type: Boolean
    Label:
      en: WhetherCreateVpc
      zh-cn: 中国語の説明
    Default: false
  vpcCidrBlock:
    Type: String
    Label:
      en: VPC CIDR IPv4 Block
      zh-cn: 中国語の説明
    Description:
      zh-cn: 中国語の説明
      en: 'VPC の IP アドレス範囲(CidrBlock 形式)。<br>次の IP アドレス範囲とそのサブネットを使用できます。<br><font color=''green''>[10.0.0.0/8]</font><br><font color=''green''>[172.16.0.0/12]</font><br><font color=''green''>[192.168.0.0/16]</font>'
    Default: 192.168.0.0/16
    AssociationProperty: ALIYUN::VPC::VPC::CidrBlock
    AssociationPropertyMetadata:
      Visible:
        Condition:
          Fn::Equals:
            - ${whetherCreateVpc}
            - true
  vSwitchCidrBlock:
    Type: String
    Label:
      en: VSwitch CIDR Block
      zh-cn: 中国語の説明
    Description:
      zh-cn: 中国語の説明
      en: VPC のサブネットセグメントに属している必要があります
    Default: 192.168.1.0/24
    AssociationProperty: ALIYUN::VPC::VSwitch::CidrBlock
    AssociationPropertyMetadata:
      VpcCidrBlock: vpcCidrBlock
      Visible:
        Condition:
          Fn::Equals:
            - ${whetherCreateVpc}
            - true
  securityGroupId:
    Label:
      en: SecurityGroupId
      zh-cn: 中国語の説明
    Type: String
    Default: ''
    AssociationProperty: 'ALIYUN::ECS::SecurityGroup::SecurityGroupId'
    AssociationPropertyMetadata:
      RegionId: regionId
      Visible:
        Condition:
          Fn::Equals:
            - ${whetherCreateVpc}
            - false
  vSwitchId:
    Label:
      en: VSwitchId
      zh-cn: 中国語の説明
    Type: String
    Default: ''
    AssociationProperty: 'ALIYUN::VPC::VSwitch::VSwitchId'
    AssociationPropertyMetadata:
      RegionId: regionId
      ZoneId: zoneId
      Filters:
        - SecurityGroupId: securityGroupId
      Visible:
        Condition:
          Fn::Equals:
            - ${whetherCreateVpc}
            - false
  internetMaxBandwidthOut:
    Type: Number
    Label:
      zh-cn: 中国語の説明
      en: Internet Max Bandwidth Out
    Description:
      zh-cn: 中国語の説明
      en: ゼロの場合はパブリック IP なし
    Default: 0
    MinValue: 0
    MaxValue: 100
  ramRoleName:
    Label:
      en: RamRoleName
      zh-cn: 中国語の説明
    Type: String
    AssociationProperty: ALIYUN::ECS::RAM::Role
    Default: ''
  systemDiskCategory:
    Label:
      en: SystemDiskCategory
      zh-cn: 中国語の説明
    Type: String
    AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
    AssociationPropertyMetadata:
      RegionId: regionId
      InstanceType: instanceType
    Default: cloud_essd
  commandType:
    Label:
      en: CommandType
      zh-cn: 中国語の説明
    Type: String
    AssociationPropertyMetadata:
      LocaleKey: PricingCycle
      Visible:
        Condition:
          Fn::Equals:
            - ${updateType}
            - RunCommand
    AllowedValues:
      - RunBatScript
      - RunPowerShellScript
      - RunShellScript
    Default: RunShellScript
  tags:
    Label:
      en: Tags
      zh-cn: 中国語の説明
    Type: Json
    AssociationProperty: Tags
    AssociationPropertyMetadata:
      ShowSystem: false
    Default: []
  commandContent:
    Label:
      en: CommandContent
      zh-cn: 中国語の説明
    Type: String
    AssociationProperty: Code
    AssociationPropertyMetadata:
      Visible:
        Condition:
          Fn::Equals:
            - ${updateType}
            - RunCommand
    Default: 'echo hello'
  timeout:
    Label:
      en: Timeout
      zh-cn: 中国語の説明
    Type: Number
    AssociationPropertyMetadata:
      Visible:
        Condition:
          Fn::Equals:
            - ${updateType}
            - RunCommand
    Default: 600
  updateType:
    Label:
      en: UpdateType
      zh-cn: 中国語の説明
    Type: String
    AllowedValues:
      - RunCommand
      - InstallPackage
    Default: RunCommand
    AssociationPropertyMetadata:
      ValueLabelMapping:
        RunCommand:
          zh-cn: 中国語の説明
          en: RunCommand
        InstallPackage:
          zh-cn: 中国語の説明
          en: InstallPackage
  packageName:
    Label:
      en: packageName
      zh-cn: 中国語の説明
    Type: String
    Default: ''
    AssociationProperty: 'ALIYUN::OOS::Package::PackageName'
    AssociationPropertyMetadata:
      RegionId: regionId
      Visible:
        Condition:
          Fn::Equals:
            - ${updateType}
            - InstallPackage
  packageVersion:
    Label:
      en: packageVersion
      zh-cn: 中国語の説明
    Type: String
    AssociationProperty: 'ALIYUN::OOS::Package::PackageVersion'
    AssociationPropertyMetadata:
      TemplateName: ${packageName}
      Visible:
        Condition:
          Fn::Equals:
            - ${updateType}
            - InstallPackage
    Default: ''
  parameters:
    Label:
      en: Parameters
      zh-cn: 中国語の説明
    Type: Json
    Default: {}
    AssociationProperty: TemplateParameter
    AssociationPropertyMetadata:
      TemplateName: packageName
      TemplateVersion: packageVersion
      TemplateType: Package
      Visible:
        Condition:
          Fn::Equals:
            - ${updateType}
            - InstallPackage
  OOSAssumeRole:
    Label:
      en: OOSAssumeRole
      zh-cn: 中国語の説明
    Type: String
    Default: ''
RamRole: '{{ OOSAssumeRole }}'
Tasks:
- Name: checkNewImageName
  Action: ACS::CheckFor
  Description:
    en: Check image name is available
    zh-cn: 中国語の説明
  Properties:
    Service: ECS
    API: DescribeImages
    Parameters:
      RegionId: '{{ regionId }}'
      ImageName: '{{ targetImageName }}'
    DesiredValues:
    - 0
    PropertySelector: TotalCount
- Name: createStack
  Action: 'ACS::ExecuteAPI'
  When:
    Fn::Equals:
      - '{{ whetherCreateVpc }}'
      - true
  Description:
    en: Create a resource stack
    zh-cn: 中国語の説明
  Properties:
    Service: ROS
    API: CreateStack
    Parameters:
      RegionId: '{{ regionId  }}'
      StackName: 'OOS-{{ACS::ExecutionId}}'
      TimeoutInMinutes: 10
      DisableRollback: false
      Parameters:
        - ParameterKey: ZoneId
          ParameterValue: '{{ zoneId }}'
        - ParameterKey: VpcCidrBlock
          ParameterValue: '{{ vpcCidrBlock  }}'
        - ParameterKey: VSwitchCidrBlock
          ParameterValue: '{{ vSwitchCidrBlock  }}'
      TemplateBody: |
        ROSTemplateFormatVersion: '2015-09-01'
        Parameters:
          ZoneId:
            Type: String
          VpcCidrBlock:
            Type: String
          VSwitchCidrBlock:
            Type: String
        Resources:
          EcsVpc:
            Type: ALIYUN::ECS::VPC
            Properties:
              CidrBlock:
                Ref: VpcCidrBlock
              VpcName:
                Ref: ALIYUN::StackName
          EcsVSwitch:
            Type: ALIYUN::ECS::VSwitch
            Properties:
              ZoneId:
                Ref: ZoneId
              VpcId:
                Ref: EcsVpc
              CidrBlock:
                Ref: VSwitchCidrBlock
          EcsSecurityGroup:
            Type: ALIYUN::ECS::SecurityGroup
            Properties:
              VpcId:
                Ref: EcsVpc
        Outputs:
          SecurityGroupId:
            Value:
              Ref: EcsSecurityGroup
          VSwitchId:
            Value:
              Ref: EcsVSwitch
  Outputs:
    StackId:
      Type: String
      ValueSelector: StackId
- Name: untilStackReady
  Action: 'ACS::WaitFor'
  When:
    Fn::Equals:
      - '{{ whetherCreateVpc }}'
      - true
  Description:
    en: Wait for the stack status CREATE_COMPLETE
    zh-cn: 中国語の説明
  OnError: deleteStack
  Properties:
    Service: ROS
    API: GetStack
    Parameters:
      RegionId: '{{ regionId  }}'
      StackId: '{{createStack.StackId}}'
    DesiredValues:
      - CREATE_COMPLETE
    StopRetryValues:
      - CREATE_FAILED
      - CHECK_FAILED
      - ROLLBACK_FAILED
      - ROLLBACK_COMPLETE
      - CREATE_ROLLBACK_COMPLETE
    PropertySelector: Status
  Outputs:
    securityGroupId:
      Type: String
      ValueSelector: 'Outputs[0].OutputValue'
    vSwitchId:
      Type: String
      ValueSelector: 'Outputs[1].OutputValue'
- Name: runInstances
  Action: ACS::ECS::RunInstances
  Description:
    en: Create a ECS instance with source image
    zh-cn: 中国語の説明
  OnError: deleteStack
  Properties:
    regionId: '{{ regionId }}'
    imageId: '{{ sourceImageId }}'
    instanceType: '{{ instanceType }}'
    securityGroupId:
      Fn::If:
        - Fn::Equals:
            - '{{ whetherCreateVpc }}'
            - true
        - '{{ untilStackReady.securityGroupId }}'
        - '{{ securityGroupId }}'
    vSwitchId:
      Fn::If:
        - Fn::Equals:
            - '{{ whetherCreateVpc }}'
            - true
        - '{{ untilStackReady.vSwitchId }}'
        - '{{ vSwitchId }}'
    internetMaxBandwidthOut: '{{ internetMaxBandwidthOut }}'
    ramRoleName: '{{ ramRoleName }}'
    systemDiskCategory: '{{ systemDiskCategory }}'
  Outputs:
    instanceId:
      ValueSelector: instanceIds[0]
      Type: String
- Name: installCloudAssistant
  Action: ACS::ECS::InstallCloudAssistant
  Description:
    en: Install cloud assistant for ECS instance
    zh-cn: 中国語の説明
  OnError: deleteInstance
  Properties:
    regionId: '{{ regionId }}'
    instanceId: '{{ runInstances.instanceId }}'
- Name: runCommand
  Action: ACS::ECS::RunCommand
  When:
    Fn::Equals:
      - '{{ updateType }}'
      - RunCommand
  Description:
    en: Run cloud assistant command on ECS instance
    zh-cn: 中国語の説明
  OnError: deleteInstance
  Properties:
    regionId: '{{ regionId }}'
    commandContent: '{{ commandContent }}'
    commandType: '{{ commandType }}'
    instanceId: '{{ runInstances.instanceId }}'
    timeout: '{{ timeout }}'
- Name: configurePackage
  Action: ACS::ECS::ConfigureOOSPackageWithTemporaryURL
  Description:
    en: Configure Package
    zh-cn: 中国語の説明
  When:
    Fn::Equals:
      - '{{ updateType }}'
      - InstallPackage
  OnError: deleteInstance
  Properties:
    regionId: '{{ regionId }}'
    instanceId: '{{ runInstances.instanceId }}'
    packageName: '{{ packageName }}'
    packageVersion: '{{ packageVersion }}'
    parameters: '{{ parameters }}'
  Outputs:
    commandOutput:
      Type: String
      ValueSelector: .commandOutput
- Name: stopInstance
  Action: ACS::ECS::StopInstance
  Description:
    en: Stops the ECS instance
    zh-cn: 中国語の説明
  Properties:
    regionId: '{{ regionId }}'
    instanceId: '{{ runInstances.instanceId }}'
- Name: createImage
  Action: ACS::ECS::CreateImage
  Description:
    en: Create new image with the specified image name and instance ID
    zh-cn: 中国語の説明
  OnError: deleteInstance
  Properties:
    regionId: '{{ regionId }}'
    imageName: '{{ targetImageName }}'
    instanceId: '{{ runInstances.instanceId }}'
    tags: '{{tags}}'
  Outputs:
    imageId:
      ValueSelector: imageId
      Type: String
- Name: deleteInstance
  Action: ACS::ExecuteAPI
  Description:
    en: Deletes the ECS instance
    zh-cn: 中国語の説明
  Properties:
    Service: ECS
    API: DeleteInstance
    Risk: Normal
    Parameters:
      RegionId: '{{ regionId }}'
      InstanceId: '{{ runInstances.instanceId }}'
      Force: true
- Name: deleteStack
  Action: 'ACS::ExecuteApi'
  When:
    Fn::Equals:
      - '{{ whetherCreateVpc }}'
      - true
  Description:
    en: Delete the stack
    zh-cn: 中国語の説明
  Properties:
    Service: ROS
    API: DeleteStack
    Parameters:
      RegionId: '{{ regionId  }}'
      StackId: '{{ createStack.StackId }}'
Outputs:
  imageId:
    Type: String
    Value: '{{ createImage.imageId }}'
Metadata:
  ALIYUN::OOS::Interface:
    ParameterGroups:
      - Parameters:
          - regionId
          - sourceImageId
        Label:
          default:
            zh-cn: 中国語の説明
            en: Select Origin Image
      - Parameters:
          - targetImageName
          - tags
        Label:
          default:
            zh-cn: 中国語の説明
            en: Image Configure
      - Parameters:
          - zoneId
          - instanceType
          - whetherCreateVpc
          - vpcCidrBlock
          - vSwitchCidrBlock
          - securityGroupId
          - vSwitchId
          - internetMaxBandwidthOut
          - systemDiskCategory
          - ramRoleName
        Label:
          default:
            zh-cn: 中国語の説明
            en: ECS Instance Configure
      - Parameters:
          - updateType
          - packageName
          - packageVersion
          - parameters
          - commandType
          - commandContent
          - timeout
        Label:
          default:
            zh-cn: 中国語の説明
            en: Update Image Configuration
      - Parameters:
          - OOSAssumeRole
        Label:
          default:
            zh-cn: 中国語の説明
            en: Control Options