ハンズオン(簡易版): EC2入門

ハンズオン(簡易版): EC2入門

作成者

波田野 裕一

公開日

2020-05-28

更新日

2022-06-09

目的

AWS CLIを利用して、デフォルトVPC上でEC2インスタンスの作成・削除を行います。

前提

作業権限条件

本手順は、以下の権限を有する「IAMユーザー」もしくは「IAMロール/インスタンスプロファイルが付与された環境(Cloud9などを含むEC2環境)で行います。

作業権限条件: 必要なIAMポリシー

  • AmazonEC2FullAccess

必要なIAMポリシーを利用する環境(「IAMユーザー」「IAMグループ」もしくは「IAMロール/インスタンスプロファイル」)にアタッチした後に、手順を実施します。

作業環境条件

本手順は、以下の環境で行います。

環境条件1: OSとバージョン

本手順は、Amazon Linux 2"Karoo"以降のOS環境での実施を前提としています。

コマンド:

cat /etc/system-release

結果(例):

Amazon Linux release 2 (Karoo)

環境条件2: シェルとバージョン

本手順は、bash "4.2.46(2)-release"以降のシェル環境での実施を前提としています。

コマンド:

bash --version \
  | head -1

結果(例):

GNU bash, バージョン 4.2.46(2)-release (x86_64-redhat-linux-gnu)

環境条件3: AWS CLIのバージョン

本手順は、AWS CLIのバージョン"1.22.98"以降での実施を前提としています。

コマンド:

aws --version

結果(例):

aws-cli/1.22.98 Python/3.7.10 Linux/4.14.273-207.502.amzn2.x86_64 botocore/1.24.43

構成情報

本手順では、以下の構成のリソースを扱います。

_images/aws_service-ec2-1st.png

手順 (CloudShell)

注釈

CLIハンズオンの実施方法や効果的に行うためのポイントについては、CLIハンズオンガイドをご参照ください。

アンケート

今後の参考にするため、本手順についてご意見・コメントをお願いします。

注釈

  • 必須項目はありません。お気軽にご回答ください。

  • 内容が違えばお一人何回回答していただいても問題ありません。

  • はまりどころや誤字・脱字などの修正のご指摘もお待ちしています。

注釈

このアンケートシステムはS3 + Cognitoで構築しています。

クリーンアップ

クリーンアップの対象リソースと順番

クリーンアップの対象リソースと順番は以下の通りです。

_images/aws_service-ec2-1st-cleanup.png

クリーンアップ2. EC2インスタンスの終了

クリーンアップ3. デフォルトVPCの削除

事後作業

ハンズオン環境の片付け

設定情報

_conf.txt

readonly SERVICE_NAME='handson-ec2'
readonly SERVICE_NAME_SUB="${SERVICE_NAME}-1st"

. ../../../resource-catalog/io-awscli/conf/_conf-awscli.txt

readonly AWS_DEFAULT_REGION='ap-northeast-1'
readonly AWS_ID='XXXXXXXXXXXX'

# cloud9
. ../../../resource-catalog/io-awscli/conf/_conf-cloud9.txt

# policy
readonly IAM_POLICY_NAME_LIST_0='AmazonEC2FullAccess'

readonly DIR_PARAMETER="\${HOME}/tmp/parameter-${SERVICE_NAME_SUB}"
readonly DIR_ENV="\${HOME}/environment" # cloud9
#readonly DIR_ENV="\${HOME}"             # cloudshell
readonly DIR_TMP="${DIR_ENV}/tmp-${SERVICE_NAME_SUB}"
readonly DIR_CONF="${DIR_ENV}/conf-${SERVICE_NAME_SUB}"
#readonly DIR_OUTPUT="\${DIR_ENV}/tmp-${SERVICE_NAME_SUB}"
readonly DIR_USER_DATA="${DIR_CONF}"

. ../../../resource-catalog/io-awscli/conf/_conf-ec2.txt

readonly CURL_RESULT_CODE='200'

readonly USER_DATA_NAME_HTTPD_1ST="${SERVICE_NAME_SUB}-httpd-userdata"


# VPC
readonly EC2_VPC_CIDR_DEFAULT='172.31.0.0/16'

# SecurityGroup
readonly EC2_SECURITY_GROUP_NAME_DEFAULT_VPC="default"
readonly EC2_SECURITY_GROUP_RULE_TAG_NAME_HTTP="http"
readonly EC2_SECURITY_GROUP_RULE_PROTOCOL='tcp'
readonly EC2_SECURITY_GROUP_RULE_CIDR_GLOBAL='0.0.0.0/0'
readonly EC2_SECURITY_GROUP_RULE_PORT_HTTP='80'
readonly EC2_SECURITY_GROUP_RULE_PORT_FROM='80'
readonly EC2_SECURITY_GROUP_RULE_PORT_TO='80'

# Instance
readonly EC2_INSTANCE_IMAGE_ID_AWS="${EC2_IMAGE_ID_CURRENT}"
readonly EC2_INSTANCE_IMAGE_NAME_AWS="${EC2_IMAGE_NAME_CURRENT}"

readonly EC2_INSTANCE_TAG_NAME_1ST="${SERVICE_NAME_SUB}-instance"
readonly EC2_INSTANCE_TYPE='t2.micro'
readonly EC2_IP_PUBLIC='xxx.xxx.xxx.xxx'


readonly NUMBER_IAM_INSTANCE_PROFILE_UPDATE_POLICY_AWS_ATTACH='CloudShell(事前作業)0'
readonly NUMBER_CLI_TMP_DIR_PARAMETER_CREATE='完全版事前作業'

readonly NUMBER_EC2_VPC_CREATE_DEFAULT='1'
readonly NUMBER_USER_DATA_CREATE_HTTPD_1ST='2.1'
readonly NUMBER_EC2_INSTANCE_CREATE_DEFAULT_VPC_1ST='2.2'
readonly NUMBER_EC2_SECURITY_GROUP_INGRESS_AUTHORIZE_UPDATE_DEFAULT_VPC_1ST='3'
readonly NUMBER_EC2_INSTANCE_PUBLIC_IP_BROWSE_READ_1ST='4'

readonly NUMBER_EC2_SECURITY_GROUP_INGRESS_REVOKE_UPDATE_DEFAULT_VPC_1ST='クリーンアップ1'
readonly NUMBER_EC2_INSTANCE_DELETE_DEFAULT_VPC_1ST='クリーンアップ2'
readonly NUMBER_EC2_VPC_DELETE_DEFAULT='クリーンアップ3'

readonly NUMBER_CLI_TMP_DIR_HANDSON_DELETE='事後作業'
readonly NUMBER_CLI_TMP_DIR_PARAMETER_DELETE='完全版事後作業'
readonly NUMBER_EC2_INSTANCE_UPDATE_STOP_CLOUD9='CloudShell(事後作業)1'
readonly NUMBER_IAM_INSTANCE_PROFILE_UPDATE_POLICY_AWS_DETACH='CloudShell(事後作業)2'

_make-handson_light-aws_service-ec2.sh

#!/bin/sh

# 手順書作成手順
# resource-catalog/scenario-aws_service/scenario-aws_service-ec2

. ./_conf.txt


# パラメータ用ディレクトリ (完全版のみ)
#cat ../../../resource-catalog/task-cli/cli-tmp_dir-create-expand-parameter/cli-tmp_dir-create-expand-parameter.rst \
#  | sed "s/task:/${NUMBER_CLI_TMP_DIR_PARAMETER_CREATE}./" \
#  | sed "s/body-all/body-parameter-task/" \
#  > cli-tmp_dir-create-expand-parameter.rst

#cat ../../../resource-catalog/task-cli/cli-tmp_dir-delete-expand-parameter/cli-tmp_dir-delete-expand-parameter.rst \
#  | sed "s/task:/${NUMBER_CLI_TMP_DIR_PARAMETER_DELETE}./" \
#  | sed "s/body-all/body-parameter-task/" \
#  > cli-tmp_dir-delete-expand-parameter.rst


# 共通定義ファイル
cat ../../../resource-catalog/task-cli/cli-_template-create/_defines-cli.txt \
  | sed "s|<AmazonLinuxのバージョン>|${VERSION_AMAZON_LINUX}|" \
  | sed "s|<bashのバージョン>|${VERSION_BASH}|" \
  | sed "s|<設定ファイル用ディレクトリ>|${DIR_CONF}|" \
  > _defines-cli.txt

#  | sed "s|<設定値保存用ディレクトリ>|${DIR_PARAMETER}|" \
#  | sed "s|<一時ファイル用ディレクトリ>|${DIR_TMP}|" \

cat ../../../resource-catalog/task-awscli/awscli-_template-create/_defines-awscli.txt \
  | sed "s|<リージョン名>|${AWS_DEFAULT_REGION}|" \
  | sed "s|<AWS_ID>|${AWS_ID}|" \
  | sed "s/<AWSCLIバージョン>/${AWSCLI_VERSION}/" \
  | sed "s/<AWSCLI:Pythonバージョン>/${AWSCLI_PYTHON_VERSION}/" \
  | sed "s/<AWSCLI:Linuxバージョン>/${AWSCLI_LINUX_VERSION}/" \
  | sed "s/<AWSCLI:botocoreバージョン>/${AWSCLI_BOTOCORE_VERSION}/" \
  > _defines-awscli.txt

cat ../../../resource-catalog/task-cloudtrail/cloudtrail-_template-create/_defines-cloudtrail-unixtime.txt \
  > _defines-cloudtrail-unixtime.txt


# ハンズオン用ディレクトリ
cat ../../../resource-catalog/task-cli/cli-tmp_dir-delete-expand-handson/cli-tmp_dir-delete-expand-handson.rst \
  | sed 's/_cli-tmp_dir-delete-expand-handson:/_cli-tmp_dir-delete-expand-handson-fullset:/' \
  | sed "s/task:/${NUMBER_CLI_TMP_DIR_HANDSON_DELETE}./" \
  | sed "s/body-all/body-parameter-task/" \
  > cli-tmp_dir-delete-expand-handson.rst


# cloud9インスタンスの停止
./__make-ec2-instance-cloud9-update.sh


# IAMポリシー
./__make-iam-instance_profile_policy-aws-attach.sh
./__make-iam-instance_profile_policy-aws-detach.sh


# はじめてのEC2
./__make-ec2-vpc-default-create.sh
./__make-ec2-vpc-default-delete.sh
./__make-user_data-amazonlinux-httpd-1st-create.sh
./__make-ec2-instance-user_data-public_ip_address-default_vpc-1st-create.sh
./__make-ec2-instance-user_data-public_ip_address-default_vpc-1st-delete.sh

備考

参照情報