【AWS China】EC2にSSH接続する & AWS CLIを使ってみる

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

最近AWSの中国リージョン(以下AWS China)に触れる機会がありました。著者がAWSを初めて触ったときから5年くらい経つのですが、AWS Chinaを使うのは初めてです。AWS Chinaを触ってみて気づいたことをメモとして残しておきます。

本記事の内容は執筆時(2017/2/25)の内容をベースにしています。最新の情報とは異なる可能性がありますのでご了承ください。

AWS Chinaとは

ざっくり言えば、中国向けに展開されているAWSです。2013/12に公開が発表され、現在では中国の企業を対象に利用可能となっています。

既にAWSを利用されている方向けにAWS Chinaと一般のAWSの大きな違いを伝えるとすると、主に以下の点が挙げられます。

  • AWS China以外で作成されたAWSアカウントでAWS Chinaを利用することはできず、新規にAWS China向けのAWSアカウントを作成する必要がある
  • AWS ChinaのAWSアカウントを作成できるのは、中国向けのサービスを展開している、中国に拠点を持った企業に限られる
  • AWS Chinaでは利用できるAWSサービス・機能に制限がある。例えばCloudFrontやRoute53は利用できず、他のリージョンで利用可能になっているものでも、現在導入されていないサービスがある(AWS Lambda等)

詳細は以下の公式ページもご覧ください。

Management Consoleにログイン

以下の記事はAWS Chinaのアカウント発行が済み、Administrator権限を持ったIAM Userが発行された前提でお読みください。

まずはIAM UserでAWS Chinaにログインしてみます。通常のログイン時と同様に必要な情報をログイン画面で入力すると、トップページが表示されました。

AWS_Management_Console

サービス数が少なくてちょっと寂しいですね。ちなみに執筆時点での通常のAWSサービス一覧ページはこんな感じです。

AWS_Management_Console

余談ですが、

AWS_Management_Console

この意味がわからなかったのでGoogle翻訳にかけてみました。

google_translate_-_Google_検索

なるほど。

とりあえずSSHで接続してみる

まずはAmazon Linux EC2を起動してSSHで接続してみましょう。通常通りEC2をキーペアを指定して起動します。起動の手順に関しては省略します。

EC2_Management_Console

画像の通り、リージョン名は cn-north-1 となります。AZは cn-north-1acn-north-1b の2つが存在しています。インスタンスタイプはc4、m4、r4などの比較的新しいインスタンスタイプも使えるようです。

起動したらグローバルIPに対してSSHログインしてみます。

1__ec2-user_ip-172-31-23-80____ssh_

レイテンシはかなりありましたが、普通にSSH接続ができました。このEC2から、このブログサイトに接続できるかどうか試してみました。

[ec2-user@ip-172-31-23-80 ~]$ curl -D - -s https://dev.classmethod.jp/ -o /dev/null
HTTP/1.1 200 OK
<...snip...>

問題なく接続できるようです(ホッ)

AWS CLIを使ってみる

次に、普段利用しているAWS APIがAWS Chinaに対しても問題なく利用できるかを試してみました。確認にはAWS CLIを利用しています。

まずは、発行したIAMユーザのアクセスキーを以下のような形で ~/.aws/credentials に記載します。

[china]
aws_access_key_id = AKIAxxxxxxxxxxxxxxxxxxx
aws_secret_access_key = yyyyyyyyyyyyyyyyyyyyyyyyyy

その上で、profileとregionを指定して実行していくつかAPIを実行してみます。まずは get-caller-identity を。

$ aws sts get-caller-identity --profile china --region cn-north-1 | jq '.'
{
  "Account": "012345678901",
  "UserId": "xxxxxxxxxxxxxxxxxxx",
  "Arn": "arn:aws-cn:iam::012345678901:user/username"
}

上記のレスポンスを見て「おや?」と思われた方もいるかもしれません。 ARNが arn:aws-cn:* になっています!AWS Chinaは ARNがすべてこの形式になっています。 既存のプログラムで自前ででARNを組み立てるように作られている場合は正常に動作しない可能性が高いので注意しましょう。

さて、次はEC2の describe-instances を実行してみます。

$ aws ec2 describe-instances --instance-ids i-xxxxxxx --profile china --region cn-north-1 | jq '.Reservations[].Instances[].State.Name'
"running"

問題なく結果を得ることができましたね。API自体は全く問題なく利用できそうです。

まとめ

AWS Chinaについて、事始めとしてEC2を起動して接続し、AWS CLIを利用してAPIが利用できるかどうかを試してみました。今の時点では、ARNの形式が他のAWSとは異なること以外は特に違いを意識せずに使うことができました。

このシリーズでは引き続き、AWS Chinaを使ってみて気づいたことを書いていきたいと思います。AWS Chinaに興味のある方は引き続きDevelopers.IOをウォッチしてみてください!