たぶん動く...

多分GIS系の人。あくまで個人的見解であり、所属団体を代表するものではありません。

プレイスメントグループにEC2インスタンスを追加する/脱退させる

プレイスメントグループを触る機会があったのでいろいろ試してみます。

インスタンスを追加する

いま、tty6335-placement-group というプレイスメントグループがあります。パーティションプレイスメントグループでパーティションの数は4に設定してあります。

aws ec2 describe-placement-groups --group-names tty6335-placement-group  

{
    "PlacementGroups": [
        {
            "GroupName": "tty6335-placement-group",
            "State": "available",
            "Strategy": "partition",
            "PartitionCount": 4,
            "GroupId": "pg-030602a1033a2a342",
            "GroupArn": "arn:aws:ec2:ap-northeast-1:XXXXXXXXXX:placement-group/tty6335-placement-group"
        }
    ]
}

現在、1個のEC2インスタンスがこのプレイスメントグループに所属しています。

aws ec2 describe-instances --filters "Name=placement-group-name,Values=tty6335-placement-group" --query "Reservations[].Instances[].{InstanceName: Tags[?Key=='Name'] | [0].Value, InstanceID: InstanceId, PartitionNumber: Placement.PartitionNumber}" --output json | jq '.[] | {InstanceName, InstanceID, PartitionNumber}'
{
  "InstanceName": "tty6335-01",
  "InstanceID": "i-045841fef0680d94c",
  "PartitionNumber": 1
}

プレイスメントグループ新しくEC2インスタンスを追加します。 AWSコンソールからは操作できないらしいです。 また、追加するEC2インスタンスは停止状態である必要があります。

aws ec2 modify-instance-placement --instance-id i-0c50ce345733f7726 --group-name tty6335-placement-group`
{
    "Return": true
}

新しくプレイスメントグループにEC2インスタンスが追加されました。
あれ、PartitionNumberがnullになってる?

aws ec2 describe-instances --filters "Name=placement-group-name,Values=tty6335-placement-group" --query "Reservations[].Instances[].{InstanceName: Tags[?Key=='Name'] | [0].Value, InstanceID: InstanceId, PartitionNumber: Placement.PartitionNumber}" --output json | jq '.[] | {InstanceName, InstanceID, PartitionNumber}'
{
  "InstanceName": "tty6335-01",
  "InstanceID": "i-045841fef0680d94c",
  "PartitionNumber": 1
}
{
  "InstanceName": "tty6335-02",
  "InstanceID": "i-0c50ce345733f7726",
  "PartitionNumber": null
}

新しく追加したEC2インスタンスを起動するとPartitionNumberに数字が入ります。今回作成したEC2は同一VPC、同一サブネット内に作成したので同じPartitionNumberが振られています。

aws ec2 start-instances --instance-ids i-0c50ce345733f7726
aws ec2 describe-instances --filters "Name=placement-group-name,Values=tty6335-placement-group" --query "Reservations[].Instances[].{InstanceName: Tags[?Key=='Name'] | [0].Value, InstanceID: InstanceId, PartitionNumber: Placement.PartitionNumber}" --output json | jq '.[] | {InstanceName, InstanceID, PartitionNumber}'
{
  "InstanceName": "tty6335-01",
  "InstanceID": "i-045841fef0680d94c",
  "PartitionNumber": 1
}
{
  "InstanceName": "tty6335-02",
  "InstanceID": "i-0c50ce345733f7726",
  "PartitionNumber": 1
}

PartitionNumberが入りました。

インスタンスを脱退させる

インスタンスを停止してから、プレイスメントグループから脱退させます。AWSコンソールからは操作できないので、CLIで操作します。

aws ec2 stop-instances --instance-ids i-0c50ce345733f7726

group-nameが空の状態でコマンドを実行します。

aws ec2 modify-instance-placement --instance-id i-0c50ce345733f7726 --group-name ""
{
    "Return": true
}

プレイスメントグループからインスタンスが脱退しました。

aws ec2 describe-instances --filters "Name=placement-group-name,Values=tty6335-placement-group" --query "Reservations[].Instances[].{InstanceName: Tags[?Key=='Name'] | [0].Value, InstanceID: InstanceId, PartitionNumber: Placement.PartitionNumber}" --output json | jq '.[] | {InstanceName, InstanceID, PartitionNumber}'
{
  "InstanceName": "tty6335-01",
  "InstanceID": "i-045841fef0680d94c",
  "PartitionNumber": 1
}

参考文献

プレイスメントグループ - Amazon Elastic Compute Cloud