Tech Sketch Bucket of Technical Chips by TIS Inc.

えっ?使えるサービス多すぎ…!?なAWSでエンドポイント指定を一発でキメる!-- AWS SDK for Ruby編 --

Pocket

この記事はeXcale Developer's Blogから移転されたものです。

こんにちは、eXcale開発チームの平井です。

AWSのAPIは、各サービスのリージョン毎にエンドポイントが用意されています。 (サービス/リージョン毎のエンドポイントの情報は、公式ドキュメント(Regions and Endpoints - Amazon Web Services General Reference)で公開されています。)

そのため、使用するサービスのリージョンにあわせて、エンドポイントの情報が必要になります。 今回は、AWS SDK for Rubyでエンドポイントを設定する方法についてご紹介します。


AWS APIのエンドポイント

us-east-1 (N.Virginiaリージョン)の各サービスを利用する場合のエンドポイントは、以下の値になります。 他のリージョンのエンドポイントに関しては、公式ドキュメント(Regions and Endpoints - Amazon Web Services General Reference)で公開されています。

”設定時のキー名”は、後述(参考1)するサービス毎にエンドポイントを設定する場合のハッシュのキー名です。

サービス名 設定時のキー名 エンドポイント(us-east-1)
Amazon CloudFront:cloud_front_endpointcloudfront.amazonaws.com
Amazon CloudSearch:cloud_search_endpointcloudsearch.us-east-1.amazonaws.com
AWS CloudTrail:cloud_trail_endpointcloudtrail.us-east-1.amazonaws.com
Amazon CloudWatch:cloud_watch_endpointmonitoring.us-east-1.amazonaws.com
Amazon DynamoDB:dynamo_db_endpointdynamodb.us-east-1.amazonaws.com
Amazon Elastic Compute Cloud:ec2_endpointec2.us-east-1.amazonaws.com
Amazon Elastic MapReduce:emr_endpointelasticmapreduce.us-east-1.amazonaws.com
Amazon ElastiCache:elasticache_endpointelasticache.us-east-1.amazonaws.com
Amazon Glacier:glacier_endpointglacier.us-east-1.amazonaws.com
Amazon Relational Database Service (Beta):rds_endpointrds.us-east-1.amazonaws.com
Amazon Route 53:route_53_endpointroute53.amazonaws.com
Amazon Simple E-mail Service:simple_email_service_endpointemail.us-east-1.amazonaws.com
Amazon Simple Notifications Service:sns_endpointsns.us-east-1.amazonaws.com
Amazon Simple Queue Service:sqs_endpointsqs.us-east-1.amazonaws.com
Amazon Simple Workflow Service:simple_workflow_endpointswf.us-east-1.amazonaws.com
Amazon SimpleDB:simple_db_endpointsdb.amazonaws.com
Auto Scaling:auto_scaling_endpointautoscaling.us-east-1.amazonaws.com
AWS CloudFormation:cloud_formation_endpointcloudformation.us-east-1.amazonaws.com
AWS Data Pipeline:data_pipeline_endpointdatapipeline.us-east-1.amazonaws.com
AWS Direct Connect:direct_connect_endpointdirectconnect.us-east-1.amazonaws.com
AWS Elastic Beanstalk:elastic_beanstalk_endpointelasticbeanstalk.us-east-1.amazonaws.com
AWS Identity and Access Management:iam_endpointiam.amazonaws.com
AWS Import/Export:import_export_endpointimportexport.amazonaws.com
Amazon Kinesis:kinesis_endpointkinesis.us-east-1.amazonaws.com
AWS OpsWorks:ops_works_endpointopsworks.us-east-1.amazonaws.com
AWS Security Token Service:sts_endpointsts.amazonaws.com
AWS Storage Gateway:storage_gateway_endpointstoragegateway.us-east-1.amazonaws.com
AWS Support:support_endpointsupport.us-east-1.amazonaws.com
Elastic Load Balancing:elb_endpointelasticloadbalancing.us-east-1.amazonaws.com
Amazon Elastic Transcoder:elastic_transcoder_endpointelastictranscoder.us-east-1.amazonaws.com
Amazon Redshift:redshift_endpointredshift.us-east-1.amazonaws.com
Amazon Simple Storage Service:s3_endpoints3.amazonaws.com

今回、この記事を書くにあたり上記の表を作成したのですが、えっ?使えるサービス多すぎ…!?って感じですよね。表の値は後述(参考2)のスクリプトで取得しています。

AWS SDK for Rubyでのエンドポイント設定

さて、冒頭で使用するサービスのリージョンにあわせて、エンドポイントの情報が必要になる、と書きましたが、AWS SDK for Rubyを使用する場合は、サービス/リージョン毎にエンドポイントを調べて設定する必要はありません。以下のようにリージョンを指定すれば、各サービスのエンドポイントが適切に設定されます。

ここでは、リージョンとしてap-northeast-1(Tokyoリージョン)を指定しています。 リージョンを指定しない場合のデフォルトは、us-east-1 (N.Virginiaリージョン)となります。


では、実際に、リージョン指定することで、エンドポイントが設定されるか、確認してみましょう。 リージョン指定する前と後で、EC2とRDSのエンドポイントの変化を確認します。

リージョン指定する前は、デフォルトのus-east-1のエンドポイントになっていますが、指定後はap-northeast-1のエンドポイントになっていることがわかります。

参考1

記事作成時点(2014/05/09)のAWS SDK for Ruby(aws-sdk gem)の最新バージョンは1.40.0です。 リージョン指定によるエンドポイント設定はバージョン1.9.0からできるようになっており、1.8.5以前は以下のようにしていました。 リージョンではなく、サービス毎にエンドポイントを指定する形になっています。

上記の指定方法は、最新バージョン(1.40.0)でも使用できます。

参考2

AWS APIのエンドポイントで紹介した表の値は、以下のスクリプトで取得しています。

エンジニア採用中!私たちと一緒に働いてみませんか?