Help us understand the problem. What is going on with this article?

[JAWS-UG CLI] Amazon Redshift 入門 (7) VPCおよび作業用EC2インスタンスの削除

More than 3 years have passed since last update.

このハンズオンについて

  • このハンズオンでは、Redshiftのクラスターとそのクラスタに対してクエリを発行するインスタンスの作成を実施します。
  • クエリの発行には、「psql」を利用します。本手順では、Amazon Linux上へのインストールと利用方法を説明します。

前提条件

バージョン確認

このハンズオンは以下のバージョンで動作確認を行いました。

コマンド
aws --version
結果
aws-cli/1.10.23 Python/2.7.10 Linux/4.4.5-15.26.amzn1.x86_64 botocore/1.4.14

必要な権限

作業にあたっては、以下の権限を有したIAMユーザもしくはIAMロールを利用してください。

  • EC2に対するフルコントロール権限
  • RedShiftに関するフルコントロール権限
  • IAMに関するフルコントロール権限
  • S3に関するフルコントロール権限
  • STSに関するフルコントロール権限

0. 準備

リージョンを指定

コマンド
export AWS_DEFAULT_REGION='ap-northeast-1'

資格情報を確認

コマンド
aws configure list
結果
Name                    Value             Type    Location
----                    -----             ----    --------
profile                <not set>             None    None
access_key     ****************RDPA         iam-role
secret_key     ****************9GA8         iam-role
region           ap-northeast-1              env    AWS_DEFAULT_REGION

1. EC2インスタンスの削除

パラメータを確認

コマンド
cat << ETX

    INSTANCE_ID: ${INSTANCE_ID}

ETX
結果
i-********

EC2インスタンスの確認

コマンド
aws ec2 describe-instances --instance-ids ${INSTANCE_ID}
結果
(省略)

EC2インスタンスの削除

コマンド
aws ec2 terminate-instances --instance-ids ${INSTANCE_ID}
結果
{
    "TerminatingInstances": [
        {
            "InstanceId": "i-7b972de4",
            "CurrentState": {
                "Code": 32,
                "Name": "shutting-down"
            },
            "PreviousState": {
                "Code": 16,
                "Name": "running"
            }
        }
    ]
}

EC2インスタンスが削除されたことを確認

StateがterminatedであればOK

コマンド
aws ec2 describe-instances --instance-ids ${INSTANCE_ID}
結果
{
    "Reservations": [
        {
            "OwnerId": "************",
            "ReservationId": "r-********",
            "Groups": [],
            "Instances": [
                {
                    "Monitoring": {
                        "State": "disabled"
                    },
                    "PublicDnsName": "",
                    "Platform": "windows",
                    "State": {
                        "Code": 48,
                        "Name": "terminated"
                    },
                    "EbsOptimized": false,
                    "LaunchTime": "2015-10-17T13:28:19.000Z",
                    "ProductCodes": [],
                    "StateTransitionReason": "User initiated (2015-10-17 16:00:38 GMT)",
                    "InstanceId": "i-********",
                    "ImageId": "ami-4623a846",
                    "PrivateDnsName": "",
                    "KeyName": "UserManagementServer",
                    "SecurityGroups": [],
                    "ClientToken": "",
                    "InstanceType": "t2.medium",
                    "NetworkInterfaces": [],
                    "Placement": {
                        "Tenancy": "default",
                        "GroupName": "",
                        "AvailabilityZone": "us-west-2a"
                    },
                    "Hypervisor": "xen",
                    "BlockDeviceMappings": [],
                    "Architecture": "x86_64",
                    "StateReason": {
                        "Message": "Client.UserInitiatedShutdown: User initiated shutdown",
                        "Code": "Client.UserInitiatedShutdown"
                    },
                    "RootDeviceName": "/dev/sda1",
                    "VirtualizationType": "hvm",
                    "RootDeviceType": "ebs",
                    "AmiLaunchIndex": 0
                }
            ]
        }
    ]
}

2. インスタンスプロファイルおよびIAMロールの削除

確認(インスタンスプロファイル)

コマンド
aws iam get-instance-profile --instance-profile-name ${ROLE_NAME}
結果
{
    "InstanceProfile": {
        "InstanceProfileId": "A********************",
        "Roles": [
            {
                "AssumeRolePolicyDocument": {
                    "Version": "2012-10-17",
                    "Statement": [
                        {
                            "Action": "sts:AssumeRole",
                            "Principal": {
                                "Service": "ec2.amazonaws.com"
                            },
                            "Effect": "Allow",
                            "Sid": ""
                        }
                    ]
                },
                "RoleId": "A********************",
                "CreateDate": "2016-04-28T10:35:37Z",
                "RoleName": "redshift-role",
                "Path": "/",
                "Arn": "arn:aws:iam::************:role/redshift-role"
            }
        ],
        "CreateDate": "2016-04-28T10:36:30Z",
        "InstanceProfileName": "redshift-role",
        "Path": "/",
        "Arn": "arn:aws:iam::************:instance-profile/redshift-role"
    }
}

インスタンスプロファイルからIAMロールを削除

コマンド
aws iam remove-role-from-instance-profile \
  --instance-profile-name ${ROLE_NAME} \
  --role-name ${ROLE_NAME}
結果
(返値無し)

インスタンスプロファイルの削除

コマンド
aws iam delete-instance-profile --instance-profile-name ${ROLE_NAME}
結果
(返値無し)

インスタンスプロファイルが削除されたことを確認

コマンド
aws iam get-instance-profile --instance-profile-name ${ROLE_NAME}
結果
A client error (NoSuchEntity) occurred when calling the GetInstanceProfile operation: Instance Profile redshift-role cannot be found.

確認(IAM Role)

コマンド
aws iam list-attached-role-policies --role-name ${ROLE_NAME}
結果
{
    "AttachedPolicies": [
        {
            "PolicyName": "AmazonS3FullAccess",
            "PolicyArn": "arn:aws:iam::aws:policy/AmazonS3FullAccess"
        },
        {
            "PolicyName": "AmazonRedshiftFullAccess",
            "PolicyArn": "arn:aws:iam::aws:policy/AmazonRedshiftFullAccess"
        }
    ]
}

ポリシーをデタッチ

コマンド
aws iam detach-role-policy --role-name ${ROLE_NAME} --policy-arn ${S3_POLICY_ARN}
aws iam detach-role-policy --role-name ${ROLE_NAME} --policy-arn ${RS_POLICY_ARN}
結果
(返値無し)

IAM Roleを削除

コマンド
aws iam delete-role --role-name ${ROLE_NAME}
結果
(返値無し)

IAM Roleが削除されたことを確認

コマンド
aws iam list-attached-role-policies --role-name ${ROLE_NAME}
結果
A client error (NoSuchEntity) occurred when calling the ListAttachedRolePolicies operation: Role redshift-role does not exist.

3. Key Pairおよび秘密鍵ファイルの削除

確認

コマンド
aws ec2 describe-key-pairs --key-names ${KEY_PAIR_NAME}

ls -al ~/.ssh | grep ${KEY_MATERIAL_FILE}
結果
{
    "KeyPairs": [
        {
            "KeyName": "Redshift",
            "KeyFingerprint": "**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**"
        }
    ]
}
結果
-rw------- 1 ec2-user ec2-user 1671 Apr 28 10:30 redshift.pem

Key Pairおよび秘密鍵ファイルを削除

コマンド
aws ec2 delete-key-pair --key-name ${KEY_PAIR_NAME}

rm ~/.ssh/${KEY_MATERIAL_FILE}
結果
(返値無し)

Key Pairおよび秘密鍵ファイルが削除されたことを確認

コマンド
aws ec2 describe-key-pairs --key-names ${KEY_PAIR_NAME}

ls -al ~/.ssh | grep ${KEY_MATERIAL_FILE}
結果
A client error (InvalidKeyPair.NotFound) occurred when calling the DescribeKeyPairs operation: The key pair 'Redshift' does not exist

4. VPCおよびVPCに関連するリソースの削除

Management ConsoleからVPCを削除すると、関連するリソースも一括で削除してくれます。
時間が無い方は、Management Consoleから削除しましょう。

セキュリティグループの確認

コマンド
aws ec2 describe-security-groups --group-ids ${SG_ID_SSH}
aws ec2 describe-security-groups --group-ids ${SG_ID_REDSHIFT}
結果
{
    "SecurityGroups": [
        {
            "IpPermissionsEgress": [
                {
                    "IpProtocol": "-1",
                    "IpRanges": [
                        {
                            "CidrIp": "0.0.0.0/0"
                        }
                    ],
                    "UserIdGroupPairs": [],
                    "PrefixListIds": []
                }
            ],
            "Description": "JAWS-UG CLI at Co-Edo",
            "IpPermissions": [
                {
                    "PrefixListIds": [],
                    "FromPort": 22,
                    "IpRanges": [
                        {
                            "CidrIp": "0.0.0.0/0"
                        }
                    ],
                    "ToPort": 22,
                    "IpProtocol": "tcp",
                    "UserIdGroupPairs": []
                }
            ],
            "GroupName": "SSH",
            "VpcId": "vpc-********",
            "OwnerId": "************",
            "GroupId": "sg-********"
        }
    ]
}
結果
{
    "SecurityGroups": [
        {
            "IpPermissionsEgress": [
                {
                    "IpProtocol": "-1",
                    "IpRanges": [
                        {
                            "CidrIp": "0.0.0.0/0"
                        }
                    ],
                    "UserIdGroupPairs": [],
                    "PrefixListIds": []
                }
            ],
            "Description": "JAWS-UG CLI at Co-Edo",
            "IpPermissions": [
                {
                    "PrefixListIds": [],
                    "FromPort": 5439,
                    "IpRanges": [
                        {
                            "CidrIp": "**.**.**.**/32"
                        }
                    ],
                    "ToPort": 5439,
                    "IpProtocol": "tcp",
                    "UserIdGroupPairs": []
                }
            ],
            "GroupName": "Redshift",
            "VpcId": "vpc-********",
            "OwnerId": "************",
            "GroupId": "sg-********"
        }
    ]
}

セキュリティグループの削除

コマンド
aws ec2 delete-security-group --group-id ${SG_ID_REDSHIFT}
aws ec2 delete-security-group --group-id ${SG_ID_SSH}
結果
(返値無し)

セキュリティグループが削除されたことを確認

コマンド
aws ec2 describe-security-groups --group-ids ${SG_ID_REDSHIFT}
aws ec2 describe-security-groups --group-ids ${SG_ID_SSH}
結果
A client error (InvalidGroup.NotFound) occurred when calling the DescribeSecurityGroups operation: The security group 'sg-********' does not exist

A client error (InvalidGroup.NotFound) occurred when calling the DescribeSecurityGroups operation: The security group 'sg-********' does not exist

サブネットの確認

コマンド
aws ec2 describe-subnets --subnet-ids ${SUBNET_A_ID}
結果
{
    "Subnets": [
        {
            "VpcId": "vpc-********",
            "CidrBlock": "10.0.0.0/24",
            "MapPublicIpOnLaunch": false,
            "DefaultForAz": false,
            "State": "available",
            "AvailabilityZone": "ap-northeast-1a",
            "SubnetId": "subnet-********",
            "AvailableIpAddressCount": 251
        }
    ]
}

サブネットの削除

コマンド
aws ec2 delete-subnet --subnet-id ${SUBNET_A_ID}
結果
(返値無し)

サブネットが削除されたことを確認

コマンド
aws ec2 describe-subnets --subnet-ids ${SUBNET_A_ID}
結果
A client error (InvalidSubnetID.NotFound) occurred when calling the DescribeSubnets operation: The subnet ID 'subnet-********' does not exist

インターネットゲートウェイの確認

コマンド
aws ec2 describe-internet-gateways --internet-gateway-ids ${IGW_ID}
結果
{
    "InternetGateways": [
        {
            "Tags": [],
            "InternetGatewayId": "igw-********",
            "Attachments": [
                {
                    "State": "available",
                    "VpcId": "vpc-********"
                }
            ]
        }
    ]
}

インターネットゲートウェイをVPCからデタッチ

コマンド
aws ec2 detach-internet-gateway --internet-gateway-id ${IGW_ID} --vpc-id ${VPC_ID}
結果
(返値無し)

インターネットゲートウェイがVPCからデタッチされたことを確認

コマンド
aws ec2 describe-internet-gateways --internet-gateway-ids ${IGW_ID}
結果
{
    "InternetGateways": [
        {
            "Tags": [],
            "InternetGatewayId": "igw-********",
            "Attachments": []
        }
    ]
}

インターネットゲートウェイを削除

コマンド
aws ec2 delete-internet-gateway --internet-gateway-id ${IGW_ID}
結果
(返値無し)

インターネットゲートウェイが削除されたことを確認

コマンド
aws ec2 describe-internet-gateways --internet-gateway-ids ${IGW_ID}
結果
A client error (InvalidInternetGatewayID.NotFound) occurred when calling the DescribeInternetGateways operation: The internetGateway ID 'igw-********' does not exist

VPCの確認

コマンド
aws ec2 describe-vpcs --vpc-ids ${VPC_ID}
結果
{
    "Vpcs": [
        {
            "VpcId": "vpc-********",
            "InstanceTenancy": "default",
            "State": "available",
            "DhcpOptionsId": "dopt-********",
            "CidrBlock": "10.0.0.0/16",
            "IsDefault": false
        }
    ]
}

VPCの削除

コマンド
aws ec2 delete-vpc --vpc-id ${VPC_ID}
結果
(返値無し)

VPCが削除されたことを確認

コマンド
aws ec2 describe-vpcs --vpc-ids ${VPC_ID}
結果
A client error (InvalidVpcID.NotFound) occurred when calling the DescribeVpcs operation: The vpc ID 'vpc-********' does not exist

以上です。お疲れ様でした。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした