SSブログ

Amazon EC2 インスタンスを1からコマンドラインで立ててみる(その2:EC2インスタンスを立てる前にすること) [Amazon AWS]

 では、awsコマンドが使用出来るようになったところで、インスタンスを立てる前の準備にとりかかりたいと思います。

 詳しい事は、そのスジな書籍あるいはそのスジなblogあるいはGoogle先生等を調べてもらうとして、まっさらな状態から「やっておいた方が良い作業」にとりかかります。それは以下の2点です。

その1:「ロール」を作成しておく
 この作業は省略しても一向に差し支え有りません。その場合は「デフォルト」のロールを割り当てられることになります。しかし、後日「ロールを変更したいなあ」という事になった際に不便なので(そして、大抵は「変更したいなあ」ということになる)、デフォルトのロールとは別に最低1個、「自分用のデフォルトロール」を作成しておくと良いです。
 なお、インスタンスにロールを割り当てたり、変更したりすることが出来るのは、今のところは「インスタンスを作成するタイミングだけ」みたいです。もし、後日「他のロールを割り当てたい」なんてことになると、インスタンスを作り直すところから始めることになってしまいます。残念ながら。
 改善するといいんだけどねえ!!!

その2:「セキュリティグループ」を作成しておく
 セキュリティグループはまあ要するに「ファイヤーウォール」的な何かといったところです。どのプロトコルを通すか、あるいはそのアドレスからのアクセスは通すかといったことをここで制御することになります。これも、「自分用のデフォルトセキュリティグループ」を作成しておくと良いです。
 自分の会社・自宅からのsshだけ通す…みたいな感じで。


 というわけで、はりきって参りたいと思います。

 まずは「ロール」を新しく作成します。細かいアクセス制御は後ほど作成するとして、ひとまず「からっぽ」のロールを作成します。
 JSON型式でカラッポのロールを定義します。内容はこんな感じ。
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Principal":
        {
          "Service": "ec2.amazonaws.com"
        }
    }
  ]
}


 で、これをawsコマンドに読み込ませます。

 aws iam create-role --role-name (ロールの名前) --assume-role-policy-document file://(ロールを書いたファイル名)

 てな感じです。実行して問題が無ければこんな感じになります。

[root@maya tmp]# aws iam create-role --role-name piro791_test --assume-role-policy-document file://piro791.role.json
{
    "Role": {
        "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Action": "sts:AssumeRole",
                    "Effect": "Allow",
                    "Principal": {
                        "Service": "ec2.amazonaws.com"
                    }
                }
            ]
        },
        "RoleId": "XXXXXXXXXX",
        "CreateDate": "2014-08-21T06:35:24.631Z",
        "RoleName": "piro791_test",
        "Path": "/",
        "Arn": "arn:aws:iam::XXXXXXXXXXXX:role/piro791_test"
    }
}
[root@maya tmp]#


 現在、どんなロールが作成済みなのかを確認するのは aws iam list-roles コマンドです。

[root@lelouch src]# aws iam list-roles
{
    "Roles": [
        {
            "AssumeRolePolicyDocument": {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Action": "sts:AssumeRole",
                        "Principal": {
                            "Service": "ec2.amazonaws.com"
                        },
                        "Effect": "Allow",
                        "Sid": ""
                    }
                ]
            },
            "RoleId": "XXXXXXXXXXXXXXXXXXXXXX",
            "CreateDate": "2014-08-21T06:35:24Z",
            "RoleName": "piro791_test",
            "Path": "/",
            "Arn": "arn:aws:iam::XXXXXXXXXXXX:role/nakui_test"
        }
    ]
}



 続いて、セキュリティグループを作成します。まずはカラッポのセキュリティグループを新しく作成します。
 こちらはコマンド一発です。

 aws ec2 create-security-group --group-name (セキュリティグループの名前) --description (メモ)

 これ、--descriptionは省略できないぽいですね??

[root@maya tmp]# aws ec2 create-security-group --group-name sg_piro791_test --description "My Security Group"
{
    "return": "true",
    "GroupId": "sg-XXXXXXXX"
}


 こんな感じで実行できます。
 セキュリティグループの確認は aws ec2 describe-security-groups です。

[root@lelouch src]# aws ec2 describe-security-groups
{
    "SecurityGroups": [
        {
            "IpPermissionsEgress": [],
            "Description": "My Security Group",
            "IpPermissions": [],
            "GroupName": "sg_piro791_test",
            "OwnerId": "XXXXXXXXXXXX",
            "GroupId": "sg-XXXXXXXX"
        }
    ]
}


 なお、EC2インスタンスに対するアクセスは、「セキュリティグループに書いたトラフィックだけ許可」されるので、このままでは誰も何も出来ないことになってしまいます。そこで、ひとまずは少なくともsshだけは出来るようにしておく必要があります。あるいは、「特定のIPアドレスからだけアクセスを許可」的な方向でも構わないと思いますが。

 IPアドレスが固定出来ている場合は、次のようなコマンドを使用してセキュリティグループに定義を追加します。
 aws ec2 authorize-security-group-ingress --group-name (セキュリティグループ名) --protocol tcp --port 22 --cidr アクセス元のIPアドレス

[root@maya tmp]# aws ec2 authorize-security-group-ingress --group-name sg_piro791_test --protocol tcp --port 22 --cidr 123.45.67.89/32
{
    "return": "true"
}


 なお、IPアドレス帯で許可したい場合は、「--cidr」の部分を適切に変更してください。

 ご家庭などでIPアドレスを固定出来ない場合は、残念ながら「バッチコイ」状態にする必要が出てきます。ちょっと怖いですが仕方が無いので「0.0.0.0/0」とすることになります。こんな感じ。

 aws ec2 authorize-security-group-ingress --group-name sg_piro791_test --protocol tcp --port 22 --cidr 0.0.0.0/0

 ちなみに、「アドレス間違えちゃった!」とか、「IPアドレスが変わったので変更したい!」という場合は、正しい(新しい)アドレスの許可を設定した後で、誤った(古い)アドレスの許可設定を削除することになります。削除するのは次のコマンド。

 aws ec2 revoke-security-group-ingress --group-name (セキュリティグループ名) --protocol tcp --port 22 --cidr (許可を取り消したいアドレス

[root@maya tmp]# aws ec2 revoke-security-group-ingress --group-name sg_piro791_test --protocol tcp --port 22 --cidr 123.45.67.89/32
{
    "return": "true"
}


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。