AWS Cloud Mapを試してみる

AWS Cloud Mapを試してみる:


はじめに

2018/11/28にAWS Cloud Mapが発表になりましたので試してみます。

AWS Cloud Mapを利用するとクラウドをマッピングすることができます。Amazon S3のバケットやAmazon DynamoDBのテーブル、Amazon SQSのキュー

Amazon EC2やAmazon ECS、Amazon EKSやAWS Lambda上で構成されたカスタムクラウドサービスの様な任意のリソースに対しても分かりやすい名前を定義できます。AWS SDKと認証されたAPIクエリを使って分かりやすい名前にてリソースの場所やメタデータを検出することができます。

デプロイメントステージやバージョンの様なカスタム属性によって、リソースをさらにフィルターし、検出することができます
https://aws.amazon.com/jp/blogs/architecture/new-application-integration-with-aws-cloud-map-for-service-discovery/

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以前


image.png


Cloud Map以後


image.png


2つ目は、今までのAWSのサービスディスカバリとしては、ECSにおいてALBを使用したサーバサイドサービスディスカバリや、Route53を利用したサービスディスカバリが可能でしたが、コンテナに対するサービスディスカバリのみに対応している状況でした。Cloud Mapを使用することにより、EC2やS3,SQSといったAWSサービスのサービスディスカバリができるようになります。

Cloud Map以前


image.png


Cloud Map以後


image.png


実際のインスタンスディスカバリの方法は、3種類あります

API call

API call and DNS query in VCP

API call and Public DNS query


1つ目の環境属性を設定するユースケースを試してみます


Namespaceの作成

Create namespaceをクリック


image.png


今回は、API Callsで作成


image.png



サービスの作成

Create serviceをクリック


image.png


frontendサービスを作成します


image.png


インスタンスを登録します


image.png




image.png


本番用


image.png


開発用


image.png



サービスディスカバリ実施

フィルタリングなしでサービスディスカバリすると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" 
        } 
    ] 
} 
query-parametersでEnv=Prdとすることで本番用のインスタンスがディスカバリ可能です

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" 
        } 
    ] 
} 
query-parametersでEnv=Devとすることで本番用のインスタンスがディスカバリ可能です

$ 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サービスを作成


image.png




image.png


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" 
        } 
    ] 
} 
ARNが取得できました。EC2と同様に環境を示す属性や、ReadOnlyなどの書き込み属性などについても設定することができます


お約束

投稿内容は私個人の意見であり、所属企業・部門見解を代表するものではありません。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)