AWS Cloud Mapを試してみる
AWS Cloud Mapを試してみる:
2018/11/28にAWS Cloud Mapが発表になりましたので試してみます。
https://aws.amazon.com/jp/blogs/news/new-application-integration-with-aws-cloud-map-for-service-discovery/
AWS Cloud Mapを使用するメリットですが、大きく分けて2つあります。
1つ目は、システム全体で1つのネームスペースを使用することが可能になる点です。今までは、本番や開発といった環境ごとにdev-frontend.exmaple.comやprd-frontend.exmaple.comというように接続先の名称を環境ごとに定義していましたが、Cloud Mapでは属性値に環境情報やバージョン情報を付与することで、一意の名称で接続先をコントロールすることができます。
Cloud Map以前
Cloud Map以後
2つ目は、今までのAWSのサービスディスカバリとしては、ECSにおいてALBを使用したサーバサイドサービスディスカバリや、Route53を利用したサービスディスカバリが可能でしたが、コンテナに対するサービスディスカバリのみに対応している状況でした。Cloud Mapを使用することにより、EC2やS3,SQSといったAWSサービスのサービスディスカバリができるようになります。
Cloud Map以前
Cloud Map以後
実際のインスタンスディスカバリの方法は、3種類あります
API call
API call and DNS query in VCP
API call and Public DNS query
Create namespaceをクリック
今回は、API Callsで作成
Create serviceをクリック
frontendサービスを作成します
インスタンスを登録します
本番用
開発用
フィルタリングなしでサービスディスカバリすると2つのインスタンスが返ってきます
query-parametersでEnv=Prdとすることで本番用のインスタンスがディスカバリ可能です
query-parametersでEnv=Devとすることで本番用のインスタンスがディスカバリ可能です
logsサービスを作成
S3サービスのサービスディスカバリを実施します
ARNが取得できました。EC2と同様に環境を示す属性や、ReadOnlyなどの書き込み属性などについても設定することができます
投稿内容は私個人の意見であり、所属企業・部門見解を代表するものではありません。
はじめに
2018/11/28にAWS Cloud Mapが発表になりましたので試してみます。AWS Cloud Mapを利用するとクラウドをマッピングすることができます。Amazon S3のバケットやAmazon DynamoDBのテーブル、Amazon SQSのキューhttps://aws.amazon.com/jp/blogs/architecture/new-application-integration-with-aws-cloud-map-for-service-discovery/
Amazon EC2やAmazon ECS、Amazon EKSやAWS Lambda上で構成されたカスタムクラウドサービスの様な任意のリソースに対しても分かりやすい名前を定義できます。AWS SDKと認証されたAPIクエリを使って分かりやすい名前にてリソースの場所やメタデータを検出することができます。
デプロイメントステージやバージョンの様なカスタム属性によって、リソースをさらにフィルターし、検出することができます
https://aws.amazon.com/jp/blogs/news/new-application-integration-with-aws-cloud-map-for-service-discovery/
AWS Cloud Mapを使用するメリットですが、大きく分けて2つあります。
1つ目は、システム全体で1つのネームスペースを使用することが可能になる点です。今までは、本番や開発といった環境ごとにdev-frontend.exmaple.comやprd-frontend.exmaple.comというように接続先の名称を環境ごとに定義していましたが、Cloud Mapでは属性値に環境情報やバージョン情報を付与することで、一意の名称で接続先をコントロールすることができます。
Cloud Map以前
Cloud Map以後
2つ目は、今までのAWSのサービスディスカバリとしては、ECSにおいてALBを使用したサーバサイドサービスディスカバリや、Route53を利用したサービスディスカバリが可能でしたが、コンテナに対するサービスディスカバリのみに対応している状況でした。Cloud Mapを使用することにより、EC2やS3,SQSといったAWSサービスのサービスディスカバリができるようになります。
Cloud Map以前
Cloud Map以後
実際のインスタンスディスカバリの方法は、3種類あります
API call
API call and DNS query in VCP
API call and Public DNS query
1つ目の環境属性を設定するユースケースを試してみます
Namespaceの作成
Create namespaceをクリック今回は、API Callsで作成
サービスの作成
Create serviceをクリックfrontendサービスを作成します
インスタンスを登録します
本番用
開発用
サービスディスカバリ実施
フィルタリングなしでサービスディスカバリすると2つのインスタンスが返ってきますaws servicediscovery discover-instances --namespace-name exmaple.com --service-name frontend { "Instances": [ { "InstanceId": "ec2", "HealthStatus": "UNKNOWN", "ServiceName": "frontend", "Attributes": { "AWS_INSTANCE_IPV4": "192.0.2.44", "Env": "Dev" }, "NamespaceName": "exmaple.com" }, { "InstanceId": "ec2-2", "HealthStatus": "UNKNOWN", "ServiceName": "frontend", "Attributes": { "AWS_INSTANCE_IPV4": "192.0.2.4", "Env": "Prd" }, "NamespaceName": "exmaple.com" } ] }
aws servicediscovery discover-instances --namespace-name exmaple.com --service-name frontend --query-parameters Env=Prd { "Instances": [ { "HealthStatus": "UNKNOWN", "Attributes": { "AWS_INSTANCE_IPV4": "192.0.2.4", "Env": "Prd" }, "InstanceId": "ec2-2", "NamespaceName": "exmaple.com", "ServiceName": "frontend" } ] }
$ aws servicediscovery discover-instances --namespace-name exmaple.com --service-name frontend --query-parameters Env=Dev { "Instances": [ { "HealthStatus": "UNKNOWN", "NamespaceName": "exmaple.com", "InstanceId": "ec2", "ServiceName": "frontend", "Attributes": { "AWS_INSTANCE_IPV4": "192.0.2.44", "Env": "Dev" } } ] }
2つ目のユースケースであるS3に対するサービスディスカバリ
logsサービスを作成S3サービスのサービスディスカバリを実施します
aws servicediscovery discover-instances --namespace-name exmaple.com --service-name logs { "Instances": [ { "NamespaceName": "exmaple.com", "ServiceName": "logs", "Attributes": { "ARN": "arn:aws:s3:us-east-1:********:archive" }, "InstanceId": "archive", "HealthStatus": "UNKNOWN" } ] }
コメント
コメントを投稿