AWS-PlantUMLで使える全AWSリソースの定義と画像表示

# お題
[PlantUML](http://plantuml.com/ja/)という、ダイアグラムを独自のDSLで生成するツールがある。
（名前にUMLは付くもののUML以外にも、ワイヤーフレーム、ガントチャート、マインドマップ、ER図などさまざまなダイアグラムを生成できる。）
そのPlantUMLの[公式ライブラリ](http://plantuml.com/ja/stdlib)として、[AWS-PlantUML](https://github.com/milo-minderbinder/AWS-PlantUML)というものがあり、これを使うとテキスト形式のファイルでAWSリソースを使ったアーキテクチャ図を表現できる。

具体的には以下の通り。

1) 以下のようなPlantUML独自のDSLでテキストファイルを作る。

```aws.puml
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml
!includeurl AWSPUML/ApplicationServices/AmazonAPIGateway/AmazonAPIGateway.puml
!includeurl AWSPUML/Compute/AWSLambda/AWSLambda.puml
!includeurl AWSPUML/Compute/AWSLambda/LambdaFunction/LambdaFunction.puml
!includeurl AWSPUML/Database/AmazonDynamoDB/AmazonDynamoDB.puml
!includeurl AWSPUML/Database/AmazonDynamoDB/table/table.puml
!includeurl AWSPUML/General/AWScloud/AWScloud.puml
!includeurl AWSPUML/General/client/client.puml
!includeurl AWSPUML/General/user/user.puml
!includeurl AWSPUML/SDKs/JavaScript/JavaScript.puml
!includeurl AWSPUML/Storage/AmazonS3/AmazonS3.puml
!includeurl AWSPUML/Storage/AmazonS3/bucket/bucket.puml

skinparam componentArrowColor Black
skinparam componentBackgroundColor White
skinparam nodeBackgroundColor White
skinparam agentBackgroundColor White
skinparam artifactBackgroundColor White

USER(user)
CLIENT(browser)
JAVASCRIPT(js,SDK)

AWSCLOUD(aws) {

    AMAZONS3(s3) {
        BUCKET(site,www.insecurity.co)
        BUCKET(logs,logs.insecurity.co)
    }

    AMAZONAPIGATEWAY(api)

    AWSLAMBDA(lambda) {
        LAMBDAFUNCTION(addComments,addComments)
    }

    AMAZONDYNAMODB(dynamo) {
        TABLE(comments,Comments)
    }
}

user - browser

browser -d-> site :**1a**) get\nstatic\ncontent
site ~> logs :1a
site .u.> browser :**1b**
browser - js
js -r-> comments :**2a**) get\ncomments
comments ..> js :**2b**

js -r-> api :**3**) add\ncomment

api -d-> addComments :**4**

addComments -> comments :**5**

comments ..> js :**6**) new\ncomments
@enduml
```

2)（あらかじめローカルにDLしておいた`plantuml.jar`を使って）以下のコマンドを実行

```
java -jar plantuml.jar aws.puml
```

3) 以下のような（PNG形式の）画像ファイルが出来上がる。

![sample.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/b31a0576-0dc2-8611-e7b3-79a849f4a206.png)

ちなみに、上の図及びpumlファイルについては[AWS-PlantUML](https://github.com/milo-minderbinder/AWS-PlantUML)のREADMEに記載のもの。

何が良いって、テキストなので軽量。IDEのプレビュー機能を使えば都度画像変換するコマンドを叩かなくても、修正のたびに出来栄えが確認できるので、管理上、いちいち画像ファイルを置く必要がない。
そして、テキストゆえに変更差分がわかりやすい。GitHub等で管理すれば誰がいつどこをいじったか一目瞭然。
逆にデメリットは、PlantUML独自のDSLを覚えるのに、ややコストがかかること。

冒頭に記載の通り、適用範囲の広いPlantUMLでは公式ライブラリとしてAWSアイコンを使った図が用意されている。
AWSサービスに関するpumlファイルが数多く用意されているので、AWSのアーキテクチャを図に起こそうと思った際にこの[GitHubリポジトリ](https://github.com/milo-minderbinder/AWS-PlantUML/tree/master/dist)から使うサービスのpumlファイルを探すことになる。
けど、あらかじめ一覧になっていると嬉しいなと思い、作ってみた。

# ジャンル別のAWSリソース群

都合上、以下は省略してしまった。

- InternetOfThings/AWSIoT
- NetworkingContentDelivery/AmazonVPC ... Computeの方のVPCと重複がある気がしたので。
- SDKs

## AI

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/AI/AmazonLex/AmazonLex.puml

!includeurl AWSPUML/AI/AmazonMachineLearning/AmazonMachineLearning.puml

!includeurl AWSPUML/AI/AmazonPolly/AmazonPolly.puml

!includeurl AWSPUML/AI/AmazonRekognition/AmazonRekognition.puml

package "AI" {
    AMAZONLEX("AMAZONLEX")

    AMAZONMACHINELEARNING("AMAZONMACHINELEARNING")

    AMAZONPOLLY("AMAZONPOLLY")

    AMAZONREKOGNITION("AMAZONREKOGNITION")
}

@enduml
```

![AI.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/1b2d7162-663a-5fe3-248f-c200546ec1ce.png)

## AmazonConnect

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/ContactCenter/AmazonConnect/AmazonConnect.puml

package "ContactCenter" {
    AMAZONCONNECT("AMAZONCONNECT")
}

@enduml
```

![AmazonConnect.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/ced10eff-2475-fd6a-f31c-f478bb6cb07f.png)

## AmazonGameLift

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/GameDevelopment/AmazonGameLift/AmazonGameLift.puml

package "AmazonGameLift" {
    AMAZONGAMELIFT("AMAZONGAMELIFT")
}

@enduml
```

![AmazonGameLift.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/96fd6371-e672-ab0a-cdd9-2722524b1bc6.png)

## Analytics

### AmazonEMR

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/Analytics/AmazonEMR/AmazonEMR.puml
!includeurl AWSPUML/Analytics/AmazonEMR/EMRengine/EMRengine.puml
!includeurl AWSPUML/Analytics/AmazonEMR/EMRengineMapRM3/EMRengineMapRM3.puml
!includeurl AWSPUML/Analytics/AmazonEMR/EMRengineMapRM5/EMRengineMapRM5.puml
!includeurl AWSPUML/Analytics/AmazonEMR/EMRengineMapRM7/EMRengineMapRM7.puml
!includeurl AWSPUML/Analytics/AmazonEMR/cluster/cluster.puml
!includeurl AWSPUML/Analytics/AmazonEMR_HDFScluster/AmazonEMR_HDFScluster.puml

package "Analytics" {
    AMAZONEMR("AMAZONEMR") {
        EMRENGINE("EMRENGINE")
        EMRENGINEMAPRM3("EMRENGINEMAPRM3")
        EMRENGINEMAPRM5("EMRENGINEMAPRM5")
        EMRENGINEMAPRM7("EMRENGINEMAPRM7")
        CLUSTER("CLUSTER")
    }
}

@enduml
```

![Analytics-EMR.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/a8200c40-22dd-2dc6-e378-b4949a320c0b.png)

### AmazonKinesis

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/Analytics/AmazonKinesis/AmazonKinesis.puml
!includeurl AWSPUML/Analytics/AmazonKinesis/AmazonKinesisAnalytics/AmazonKinesisAnalytics.puml
!includeurl AWSPUML/Analytics/AmazonKinesis/AmazonKinesisFirehose/AmazonKinesisFirehose.puml
!includeurl AWSPUML/Analytics/AmazonKinesis/AmazonKinesisStreams/AmazonKinesisStreams.puml
!includeurl AWSPUML/Analytics/AmazonKinesis/AmazonKinesis_enabledapp/AmazonKinesis_enabledapp.puml

package "Analytics" {
    AMAZONKINESIS("AMAZONKINESIS") {
        AMAZONKINESISANALYTICS("AMAZONKINESISANALYTICS")
        AMAZONKINESISFIREHOSE("AMAZONKINESISFIREHOSE")
        AMAZONKINESISSTREAMS("AMAZONKINESISSTREAMS")
        AMAZONKINESIS_ENABLEDAPP("AMAZONKINESIS_ENABLEDAPP")
    }
}

@enduml
```

![Analytics-Kinesis.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/e4a2488e-80cc-250a-74bd-76a649f8643e.png)

### AmazonRedshift

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/Analytics/AmazonRedshift/AmazonRedshift.puml
!includeurl AWSPUML/Analytics/AmazonRedshift/densecomputenode/densecomputenode.puml
!includeurl AWSPUML/Analytics/AmazonRedshift/densestoragenode/densestoragenode.puml

package "Analytics" {
    AMAZONREDSHIFT("AMAZONREDSHIFT") {
        DENSECOMPUTENODE("DENSECOMPUTENODE")
        ANALYTICS_AMAZONREDSHIFT_DENSECOMPUTENODE("ANALYTICS_AMAZONREDSHIFT_DENSECOMPUTENODE")
        DENSESTORAGENODE("DENSESTORAGENODE")
        ANALYTICS_AMAZONREDSHIFT_DENSESTORAGENODE("ANALYTICS_AMAZONREDSHIFT_DENSESTORAGENODE")
    }
}

@enduml
```

![Analytics-Redshift.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/78ba3d33-bf5a-51a9-d1a9-d7e3583615c0.png)

### その他

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/Analytics/AWSDataPipeline/AWSDataPipeline.puml

!includeurl AWSPUML/Analytics/AWSGlue/AWSGlue.puml

!includeurl AWSPUML/Analytics/AmazonAthena/AmazonAthena.puml

!includeurl AWSPUML/Analytics/AmazonCloudSearch/AmazonCloudSearch.puml
!includeurl AWSPUML/Analytics/AmazonCloudSearch/searchdocuments/searchdocuments.puml

!includeurl AWSPUML/Analytics/AmazonES/AmazonES.puml

!includeurl AWSPUML/Analytics/AmazonQuickSight/AmazonQuickSight.puml

package "Analytics" {
    AWSDATAPIPELINE("AWSDATAPIPELINE")

    AWSGLUE("AWSGLUE")

    AMAZONATHENA("AMAZONATHENA")

    AMAZONCLOUDSEARCH("AMAZONCLOUDSEARCH") {
        SEARCHDOCUMENTS("SEARCHDOCUMENTS")
    }

    AMAZONES("AMAZONES")

    AMAZONQUICKSIGHT("AMAZONQUICKSIGHT")
}

@enduml
```

![Analytics-Others.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/fb65d537-c067-2a30-1280-ed4a5f98a1ef.png)

## ApplicationServices

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/ApplicationServices/AWSStepFunctions/AWSStepFunctions.puml

!includeurl AWSPUML/ApplicationServices/AmazonAPIGateway/AmazonAPIGateway.puml

!includeurl AWSPUML/ApplicationServices/AmazonElasticTranscoder/AmazonElasticTranscoder.puml

!includeurl AWSPUML/ApplicationServices/AmazonSWF/AmazonSWF.puml
!includeurl AWSPUML/ApplicationServices/AmazonSWF/decider/decider.puml
!includeurl AWSPUML/ApplicationServices/AmazonSWF/worker/worker.puml

package "ApplicationServices" {
    AWSSTEPFUNCTIONS("AWSSTEPFUNCTIONS")

    AMAZONAPIGATEWAY("AMAZONAPIGATEWAY")

    AMAZONELASTICTRANSCODER("AMAZONELASTICTRANSCODER")

    AMAZONSWF("AMAZONSWF") {
        DECIDER("DECIDER")
        WORKER("WORKER")
    }
}

@enduml
```

![ApplicationServices.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/f423bb26-d1da-5b38-0591-c12f6048716f.png)

## BusinessProductivity

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/BusinessProductivity/AmazonChime/AmazonChime.puml

!includeurl AWSPUML/BusinessProductivity/AmazonWorkDocs/AmazonWorkDocs.puml

!includeurl AWSPUML/BusinessProductivity/AmazonWorkMail/AmazonWorkMail.puml

package "BusinessProductivity" {
    AMAZONCHIME("AMAZONCHIME")

    AMAZONWORKDOCS("AMAZONWORKDOCS")

    AMAZONWORKMAIL("AMAZONWORKMAIL")
}

@enduml
```

![BusinessProductivity.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/b1fc394b-d5dd-f891-9651-2fb6b6294e06.png)

## Compute

### EC2

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/Compute/AmazonEC2/AmazonEC2.puml
!includeurl AWSPUML/Compute/AmazonEC2/AMI/AMI.puml
!includeurl AWSPUML/Compute/AmazonEC2/AutoScaling/AutoScaling.puml
!includeurl AWSPUML/Compute/AmazonEC2/DBoninstance/DBoninstance.puml
!includeurl AWSPUML/Compute/AmazonEC2/EC2rescue/EC2rescue.puml
!includeurl AWSPUML/Compute/AmazonEC2/ElasticIPaddress/ElasticIPaddress.puml
!includeurl AWSPUML/Compute/AmazonEC2/SpotFleet/SpotFleet.puml
!includeurl AWSPUML/Compute/AmazonEC2/SpotInstance/SpotInstance.puml
!includeurl AWSPUML/Compute/AmazonEC2/X1instance/X1instance.puml
!includeurl AWSPUML/Compute/AmazonEC2/instance/instance.puml
!includeurl AWSPUML/Compute/AmazonEC2/instances/instances.puml
!includeurl AWSPUML/Compute/AmazonEC2/instancewithCloudWatch/instancewithCloudWatch.puml
!includeurl AWSPUML/Compute/AmazonEC2/optimizedinstance/optimizedinstance.puml

package "Compute" {
    AMAZONEC2("AMAZONEC2") {
        AMI("AMI")
        AUTOSCALING("AutoScaling")
        DBONINSTANCE("DBONINSTANCE")
        EC2RESCUE("EC2RESCUE")
        ELASTICIPADDRESS("ELASTICIPADDRESS")
        SPOTFLEET("SPOTFLEET")
        SPOTINSTANCE("SPOTINSTANCE")
        X1INSTANCE("X1INSTANCE")
        INSTANCE("INSTANCE")
        INSTANCES("INSTANCES")
        AMAZONEC2_INSTANCES("AMAZONEC2_INSTANCES")
        INSTANCEWITHCLOUDWATCH("INSTANCEWITHCLOUDWATCH")
        OPTIMIZEDINSTANCE("OPTIMIZEDINSTANCE")
    }
}

@enduml
```

![Compute-EC2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/f901e123-056e-edad-efb7-3cf9b23762da.png)

### ECS

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/Compute/AmazonECS/AmazonECS.puml
!includeurl AWSPUML/Compute/AmazonECS/ECScontainer/ECScontainer.puml
!includeurl AWSPUML/Compute/AmazonECS/ECScontainer_Alt1/ECScontainer_Alt1.puml
!includeurl AWSPUML/Compute/AmazonECS/ECScontainer_Alt2/ECScontainer_Alt2.puml

package "Compute" {
    AMAZONECS("AMAZONECS") {
        ECSCONTAINER("ECSCONTAINER")
        ECSCONTAINER_ALT1("ECSCONTAINER_ALT1")
        ECSCONTAINER_ALT2("ECSCONTAINER_ALT2")
    }
}

@enduml
```

![Compute-ECS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/eec11192-6d6f-c4de-cf72-b6cee11ccf16.png)

### ELB

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/Compute/ElasticLoadBalancing/ElasticLoadBalancing.puml
!includeurl AWSPUML/Compute/ElasticLoadBalancing/ApplicationLoadBalancer/ApplicationLoadBalancer.puml
!includeurl AWSPUML/Compute/ElasticLoadBalancing/ClassicLoadbalancer/ClassicLoadbalancer.puml

package "Compute" {
    ELASTICLOADBALANCING("ELASTICLOADBALANCING") {
        APPLICATIONLOADBALANCER("APPLICATIONLOADBALANCER")
        COMPUTE_ELASTICLOADBALANCING_APPLICATIONLOADBALANCER("COMPUTE_ELASTICLOADBALANCING_APPLICATIONLOADBALANCER")
        CLASSICLOADBALANCER("CLASSICLOADBALANCER")
    }
}

@enduml
```

![Compute-ELB.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/6b745e13-e455-23be-c0d5-b670b3e848de.png)

### VPC

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/Compute/AmazonVPC/AmazonVPC.puml
!includeurl AWSPUML/Compute/AmazonVPC/Internetgateway/Internetgateway.puml
!includeurl AWSPUML/Compute/AmazonVPC/VPCNATgateway/VPCNATgateway.puml
!includeurl AWSPUML/Compute/AmazonVPC/VPCpeering/VPCpeering.puml
!includeurl AWSPUML/Compute/AmazonVPC/VPNconnection/VPNconnection.puml
!includeurl AWSPUML/Compute/AmazonVPC/VPNgateway/VPNgateway.puml
!includeurl AWSPUML/Compute/AmazonVPC/customergateway/customergateway.puml
!includeurl AWSPUML/Compute/AmazonVPC/elasticnetworkadapter/elasticnetworkadapter.puml
!includeurl AWSPUML/Compute/AmazonVPC/elasticnetworkinterface/elasticnetworkinterface.puml
!includeurl AWSPUML/Compute/AmazonVPC/endpoints/endpoints.puml
!includeurl AWSPUML/Compute/AmazonVPC/flowlogs/flowlogs.puml
!includeurl AWSPUML/Compute/AmazonVPC/networkaccesscontrollist/networkaccesscontrollist.puml
!includeurl AWSPUML/Compute/AmazonVPC/router/router.puml

package "Compute" {
    AMAZONVPC("AMAZONVPC") {
        INTERNETGATEWAY("INTERNETGATEWAY")
        VPCNATGATEWAY("VPCNATGATEWAY")
        COMPUTE_AMAZONVPC_VPCNATGATEWAY("COMPUTE_AMAZONVPC_VPCNATGATEWAY")
        VPCPEERING("VPCPEERING")
        COMPUTE_AMAZONVPC_VPCPEERING("COMPUTE_AMAZONVPC_VPCPEERING")
        VPNCONNECTION("VPNCONNECTION")
        COMPUTE_AMAZONVPC_VPNCONNECTION("COMPUTE_AMAZONVPC_VPNCONNECTION")
        VPNGATEWAY("VPNGATEWAY")
        COMPUTE_AMAZONVPC_VPNGATEWAY("COMPUTE_AMAZONVPC_VPNGATEWAY")
        CUSTOMERGATEWAY("CUSTOMERGATEWAY")
        COMPUTE_AMAZONVPC_CUSTOMERGATEWAY("COMPUTE_AMAZONVPC_CUSTOMERGATEWAY")
        ELASTICNETWORKADAPTER("ELASTICNETWORKADAPTER")
        COMPUTE_AMAZONVPC_ELASTICNETWORKADAPTER("COMPUTE_AMAZONVPC_ELASTICNETWORKADAPTER")
        ELASTICNETWORKINTERFACE("ELASTICNETWORKINTERFACE")
        COMPUTE_AMAZONVPC_ELASTICNETWORKINTERFACE("COMPUTE_AMAZONVPC_ELASTICNETWORKINTERFACE")
        ENDPOINTS("ENDPOINTS")
        COMPUTE_AMAZONVPC_ENDPOINTS("COMPUTE_AMAZONVPC_ENDPOINTS")
        FLOWLOGS("FLOWLOGS")
        COMPUTE_AMAZONVPC_FLOWLOGS("COMPUTE_AMAZONVPC_FLOWLOGS")
        NETWORKACCESSCONTROLLIST("NETWORKACCESSCONTROLLIST")
        COMPUTE_AMAZONVPC_NETWORKACCESSCONTROLLIST("COMPUTE_AMAZONVPC_NETWORKACCESSCONTROLLIST")
        ROUTER("ROUTER")
        COMPUTE_AMAZONVPC_ROUTER("COMPUTE_AMAZONVPC_ROUTER")
    }
}

@enduml
```

![Compute-VPC.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/c70da0f9-4226-3d50-aabe-06ffedb93812.png)

### その他

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/Compute/AWSBatch/AWSBatch.puml

!includeurl AWSPUML/Compute/AWSElasticBeanstalk/AWSElasticBeanstalk.puml
!includeurl AWSPUML/Compute/AWSElasticBeanstalk/application/application.puml
!includeurl AWSPUML/Compute/AWSElasticBeanstalk/deployment/deployment.puml

!includeurl AWSPUML/Compute/AWSLambda/AWSLambda.puml
!includeurl AWSPUML/Compute/AWSLambda/LambdaFunction/LambdaFunction.puml

!includeurl AWSPUML/Compute/AmazonECR/AmazonECR.puml
!includeurl AWSPUML/Compute/AmazonECR/ECRRegistry/ECRRegistry.puml

!includeurl AWSPUML/Compute/AmazonLightsail/AmazonLightsail.puml

package "Compute" {
    AWSBATCH("AWSBATCH")

    AWSELASTICBEANSTALK("AWSELASTICBEANSTALK") {
        APPLICATION("APPLICATION")
        DEPLOYMENT("DEPLOYMENT")
    }

    AWSLAMBDA("AWSLAMBDA") {
        LAMBDAFUNCTION("LAMBDAFUNCTION")
    }

    AMAZONECR("AMAZONECR") {
        ECRREGISTRY("ECRREGISTRY")
    }

    AMAZONLIGHTSAIL("AMAZONLIGHTSAIL")
}

@enduml
```

![Compute-Others.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/0660a1aa-39df-8ee7-3ab2-a10af85b5be2.png)

## Database

### DynamoDB

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/Database/AmazonDynamoDB/AmazonDynamoDB.puml
!includeurl AWSPUML/Database/AmazonDynamoDB/attribute/attribute.puml
!includeurl AWSPUML/Database/AmazonDynamoDB/attributes/attributes.puml
!includeurl AWSPUML/Database/AmazonDynamoDB/globalsecondaryindex/globalsecondaryindex.puml
!includeurl AWSPUML/Database/AmazonDynamoDB/item/item.puml
!includeurl AWSPUML/Database/AmazonDynamoDB/items/items.puml
!includeurl AWSPUML/Database/AmazonDynamoDB/table/table.puml

package "Database" {
    AMAZONDYNAMODB("AMAZONDYNAMODB") {
        ATTRIBUTE("ATTRIBUTE")
        ATTRIBUTES("ATTRIBUTES")
        GLOBALSECONDARYINDEX("GLOBALSECONDARYINDEX")
        ITEM("ITEM")
        ITEMS("ITEMS")
        TABLE("TABLE")
    }
}

@enduml
```

![Database-DynamoDB.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/d7285aa7-e574-7eee-c3e4-33734b5c4f09.png)

### RDS

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/Database/AmazonRDS/AmazonRDS.puml
!includeurl AWSPUML/Database/AmazonRDS/DBinstance/DBinstance.puml
!includeurl AWSPUML/Database/AmazonRDS/MSSQLinstance/MSSQLinstance.puml
!includeurl AWSPUML/Database/AmazonRDS/MSSQLinstancealternate/MSSQLinstancealternate.puml
!includeurl AWSPUML/Database/AmazonRDS/MySQLDBinstance/MySQLDBinstance.puml
!includeurl AWSPUML/Database/AmazonRDS/MySQLinstancealternate/MySQLinstancealternate.puml
!includeurl AWSPUML/Database/AmazonRDS/OracleDBinstancealternate/OracleDBinstancealternate.puml
!includeurl AWSPUML/Database/AmazonRDS/PIOP/PIOP.puml
!includeurl AWSPUML/Database/AmazonRDS/PostgreSQLinstance/PostgreSQLinstance.puml
!includeurl AWSPUML/Database/AmazonRDS/SQLmaster/SQLmaster.puml
!includeurl AWSPUML/Database/AmazonRDS/SQLslave/SQLslave.puml
!includeurl AWSPUML/Database/AmazonRDS/instancereadreplica/instancereadreplica.puml
!includeurl AWSPUML/Database/AmazonRDS/instancestandby/instancestandby.puml
!includeurl AWSPUML/Database/AmazonRDS/oracleDBinstance/oracleDBinstance.puml

package "Database" {
    AMAZONRDS("AMAZONRDS") {
        DBINSTANCE("DBINSTANCE")
        MSSQLINSTANCE("MSSQLINSTANCE")
        MSSQLINSTANCEALTERNATE("MSSQLINSTANCEALTERNATE")
        MYSQLDBINSTANCE("MYSQLDBINSTANCE")
        MYSQLINSTANCEALTERNATE("MYSQLINSTANCEALTERNATE")
        ORACLEDBINSTANCEALTERNATE("ORACLEDBINSTANCEALTERNATE")
        PIOP("PIOP")
        POSTGRESQLINSTANCE("POSTGRESQLINSTANCE")
        SQLMASTER("SQLMASTER")
        SQLSLAVE("SQLSLAVE")
        INSTANCEREADREPLICA("INSTANCEREADREPLICA")
        INSTANCESTANDBY("INSTANCESTANDBY")
        ORACLEDBINSTANCE("ORACLEDBINSTANCE")
    }
}

@enduml
```

![Database-RDS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/f2d55f85-ff8b-90b0-5451-d6eb1aede9dc.png)

### Redshift

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/Database/AmazonRedshift/AmazonRedshift.puml
!includeurl AWSPUML/Database/AmazonRedshift/densecomputenode/densecomputenode.puml
!includeurl AWSPUML/Database/AmazonRedshift/densestoragenode/densestoragenode.puml

package "Database" {
    AMAZONREDSHIFT("AMAZONREDSHIFT") {
        DENSECOMPUTENODE("DENSECOMPUTENODE")
        DATABASE_AMAZONREDSHIFT_DENSECOMPUTENODE("DATABASE_AMAZONREDSHIFT_DENSECOMPUTENODE")
        DENSESTORAGENODE("DENSESTORAGENODE")
        DATABASE_AMAZONREDSHIFT_DENSESTORAGENODE("DATABASE_AMAZONREDSHIFT_DENSESTORAGENODE")
    }
}

@enduml
```

![Database-Redshift.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/751c6fd7-22f9-a0f8-0d9c-4d26d5210a55.png)

## DesktopAppStreaming

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/DesktopAppStreaming/AmazonAppStream2_0/AmazonAppStream2_0.puml

!includeurl AWSPUML/DesktopAppStreaming/AmazonWorkSpaces/AmazonWorkSpaces.puml

package "DesktopAppStreaming" {
    AMAZONAPPSTREAM2_0("AMAZONAPPSTREAM2_0")

    AMAZONWORKSPACES("AMAZONWORKSPACES")
}

@enduml
```

![DesktopAppStreaming.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/f5b6765d-5826-6054-65d0-67842af131c3.png)

### その他

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/Database/AWSDMS/AWSDMS.puml
!includeurl AWSPUML/Database/AWSDMS/databasemigrationworkflowjob/databasemigrationworkflowjob.puml

!includeurl AWSPUML/Database/AmazonDynamoDBAccelerator/AmazonDynamoDBAccelerator.puml

!includeurl AWSPUML/Database/AmazonElasticCache/AmazonElasticCache.puml
!includeurl AWSPUML/Database/AmazonElasticCache/Memcached/Memcached.puml
!includeurl AWSPUML/Database/AmazonElasticCache/Redis/Redis.puml
!includeurl AWSPUML/Database/AmazonElasticCache/cachenode/cachenode.puml

package "Database" {
    AWSDMS("AWSDMS") {
        DATABASEMIGRATIONWORKFLOWJOB("DATABASEMIGRATIONWORKFLOWJOB")
    }
    DATABASE_AWSDMS("DATABASE_AWSDMS") {
        DATABASEMIGRATIONWORKFLOWJOB("DATABASEMIGRATIONWORKFLOWJOB")
    }

    AMAZONDYNAMODBACCELERATOR("AMAZONDYNAMODBACCELERATOR")

    AMAZONELASTICCACHE("AMAZONELASTICCACHE") {
        MEMCACHED("MEMCACHED")
        REDIS("REDIS")
        CACHENODE("CACHENODE")
    }
}

@enduml
```

![Database-Others.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/b1e354bf-d705-d9aa-e773-28f8d08e9d7b.png)

## DeveloperTools

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/DeveloperTools/AWSCodeBuild/AWSCodeBuild.puml

!includeurl AWSPUML/DeveloperTools/AWSCodeCommit/AWSCodeCommit.puml

!includeurl AWSPUML/DeveloperTools/AWSCodeDeploy/AWSCodeDeploy.puml

!includeurl AWSPUML/DeveloperTools/AWSCodePipeline/AWSCodePipeline.puml

!includeurl AWSPUML/DeveloperTools/AWSCodeStar/AWSCodeStar.puml

!includeurl AWSPUML/DeveloperTools/AWSX_Ray/AWSX_Ray.puml

package "DeveloperTools" {
    AWSCODEBUILD("AWSCODEBUILD")

    AWSCODECOMMIT("AWSCODECOMMIT")

    AWSCODEDEPLOY("AWSCODEDEPLOY")

    AWSCODEPIPELINE("AWSCODEPIPELINE")

    AWSCODESTAR("AWSCODESTAR")

    AWSX_RAY("AWSX_RAY")
}

@enduml
```

![DeveloperTools.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/6fd9425e-6ecf-6449-6224-8b5a644cae02.png)

## General

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/General/AWSManagementConsole/AWSManagementConsole.puml
!includeurl AWSPUML/General/AWScloud/AWScloud.puml
!includeurl AWSPUML/General/Internet/Internet.puml
!includeurl AWSPUML/General/Internetalternate1/Internetalternate1.puml
!includeurl AWSPUML/General/Internetalternate2/Internetalternate2.puml
!includeurl AWSPUML/General/SAMLtoken/SAMLtoken.puml
!includeurl AWSPUML/General/SSLpadlock/SSLpadlock.puml
!includeurl AWSPUML/General/client/client.puml
!includeurl AWSPUML/General/corporatedatacenter/corporatedatacenter.puml
!includeurl AWSPUML/General/disk/disk.puml
!includeurl AWSPUML/General/forums/forums.puml
!includeurl AWSPUML/General/genericdatabase/genericdatabase.puml
!includeurl AWSPUML/General/mobileclient/mobileclient.puml
!includeurl AWSPUML/General/multimedia/multimedia.puml
!includeurl AWSPUML/General/officebuilding/officebuilding.puml
!includeurl AWSPUML/General/tapestorage/tapestorage.puml
!includeurl AWSPUML/General/traditionalserver/traditionalserver.puml
!includeurl AWSPUML/General/user/user.puml
!includeurl AWSPUML/General/users/users.puml
!includeurl AWSPUML/General/virtualprivatecloud/virtualprivatecloud.puml

package "General" {
    AWSMANAGEMENTCONSOLE("AWSMANAGEMENTCONSOLE")
    AWSCLOUD("AWSCLOUD")
    INTERNET("INTERNET")
    INTERNETALTERNATE1("INTERNETALTERNATE1")
    INTERNETALTERNATE2("INTERNETALTERNATE2")
    SAMLTOKEN("SAMLTOKEN")
    SSLPADLOCK("SSLPADLOCK")
    CLIENT("CLIENT")
    CORPORATEDATACENTER("CORPORATEDATACENTER")
    DISK("DISK")
    FORUMS("FORUMS")
    GENERICDATABASE("GENERICDATABASE")
    MOBILECLIENT("MOBILECLIENT")
    MULTIMEDIA("MULTIMEDIA")
    OFFICEBUILDING("OFFICEBUILDING")
    TAPESTORAGE("TAPESTORAGE")
    TRADITIONALSERVER("TRADITIONALSERVER")
    USER("USER")
    USERS("USERS")
    VIRTUALPRIVATECLOUD("VIRTUALPRIVATECLOUD")
}

@enduml
```

![General.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/c198c9e3-c8fc-7688-a9bf-4c1925fe8f93.png)

## ManagementTools

### CloudWatch

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/ManagementTools/AmazonCloudWatch/AmazonCloudWatch.puml
!includeurl AWSPUML/ManagementTools/AmazonCloudWatch/alarm/alarm.puml
!includeurl AWSPUML/ManagementTools/AmazonCloudWatch/eventeventbased/eventeventbased.puml
!includeurl AWSPUML/ManagementTools/AmazonCloudWatch/eventtimebased/eventtimebased.puml
!includeurl AWSPUML/ManagementTools/AmazonCloudWatch/rule/rule.puml

package "ManagementTools" {
    AMAZONCLOUDWATCH("AMAZONCLOUDWATCH") {
        ALARM("ALARM")
        EVENTEVENTBASED("EVENTEVENTBASED")
        EVENTTIMEBASED("EVENTTIMEBASED")
        RULE("RULE")
        AMAZONCLOUDWATCH_RULE("AMAZONCLOUDWATCH_RULE")
    }
}

@enduml
```

![ManagementTools-AmazonCloudWatch.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/0b7a4948-ae24-957b-ca84-7c86cc7b483f.png)

### EC2SystemsManager

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/ManagementTools/AmazonEC2SystemsManager/AmazonEC2SystemsManager.puml
!includeurl AWSPUML/ManagementTools/AmazonEC2SystemsManager/Automation/Automation.puml
!includeurl AWSPUML/ManagementTools/AmazonEC2SystemsManager/Inventory/Inventory.puml
!includeurl AWSPUML/ManagementTools/AmazonEC2SystemsManager/MaintenanceWindow/MaintenanceWindow.puml
!includeurl AWSPUML/ManagementTools/AmazonEC2SystemsManager/ParameterStore/ParameterStore.puml
!includeurl AWSPUML/ManagementTools/AmazonEC2SystemsManager/PatchManager/PatchManager.puml
!includeurl AWSPUML/ManagementTools/AmazonEC2SystemsManager/RunCommand/RunCommand.puml
!includeurl AWSPUML/ManagementTools/AmazonEC2SystemsManager/StateManager/StateManager.puml
!includeurl AWSPUML/ManagementTools/AmazonEC2SystemsManager/documents/documents.puml

package "ManagementTools" {
    AMAZONEC2SYSTEMSMANAGER("AMAZONEC2SYSTEMSMANAGER") {
        AUTOMATION("AUTOMATION")
        INVENTORY("INVENTORY")
        MAINTENANCEWINDOW("MAINTENANCEWINDOW")
        PARAMETERSTORE("PARAMETERSTORE")
        PATCHMANAGER("PATCHMANAGER")
        RUNCOMMAND("RUNCOMMAND")
        STATEMANAGER("STATEMANAGER")
        DOCUMENTS("DOCUMENTS")
    }
}

@enduml
```

![ManagementTools-AmazonEC2SystemsManager.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/788bcbd6-68e0-0cfa-513c-65fc4b6c6972.png)

### CloudFormation

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/ManagementTools/AWSCloudFormation/AWSCloudFormation.puml
!includeurl AWSPUML/ManagementTools/AWSCloudFormation/changeset/changeset.puml
!includeurl AWSPUML/ManagementTools/AWSCloudFormation/stack/stack.puml
!includeurl AWSPUML/ManagementTools/AWSCloudFormation/template/template.puml

package "ManagementTools" {
    AWSCLOUDFORMATION("AWSCLOUDFORMATION") {
        CHANGESET("CHANGESET")
        STACK("STACK")
        AWSCLOUDFORMATION_STACK("AWSCLOUDFORMATION_STACK")
        TEMPLATE("TEMPLATE")
    }
}

@enduml
```

![ManagementTools-AWSCloudFormation.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/587c3787-a0eb-6e2e-ea1c-e70da6c5de89.png)

### OpsWorks

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/ManagementTools/AWSOpsWorks/AWSOpsWorks.puml
!includeurl AWSPUML/ManagementTools/AWSOpsWorks/apps/apps.puml
!includeurl AWSPUML/ManagementTools/AWSOpsWorks/deployments/deployments.puml
!includeurl AWSPUML/ManagementTools/AWSOpsWorks/instances/instances.puml
!includeurl AWSPUML/ManagementTools/AWSOpsWorks/layers/layers.puml
!includeurl AWSPUML/ManagementTools/AWSOpsWorks/monitoring/monitoring.puml
!includeurl AWSPUML/ManagementTools/AWSOpsWorks/permissions/permissions.puml
!includeurl AWSPUML/ManagementTools/AWSOpsWorks/resources/resources.puml
!includeurl AWSPUML/ManagementTools/AWSOpsWorks/stack/stack.puml

package "ManagementTools" {
    AWSOPSWORKS("AWSOPSWORKS") {
        APPS("APPS")
        DEPLOYMENTS("DEPLOYMENTS")
        INSTANCES("INSTANCES")
        AWSOPSWORKS_INSTANCES("AWSOPSWORKS_INSTANCES")
        LAYERS("LAYERS")
        MONITORING("MONITORING")
        PERMISSIONS("PERMISSIONS")
        AWSOPSWORKS_PERMISSIONS("AWSOPSWORKS_PERMISSIONS")
        RESOURCES("RESOURCES")
        STACK("STACK")
        AWSOPSWORKS_STACK("AWSOPSWORKS_STACK")
    }
}

@enduml
```

![ManagementTools-AWSOpsWorks.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/82cdeebc-f58f-e61c-f18d-14cabc2f1de8.png)

### TrustedAdvisor

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/ManagementTools/AWSTrustedAdvisor/AWSTrustedAdvisor.puml
!includeurl AWSPUML/ManagementTools/AWSTrustedAdvisor/checklist/checklist.puml
!includeurl AWSPUML/ManagementTools/AWSTrustedAdvisor/checklistcost/checklistcost.puml
!includeurl AWSPUML/ManagementTools/AWSTrustedAdvisor/checklistfaulttolerance/checklistfaulttolerance.puml
!includeurl AWSPUML/ManagementTools/AWSTrustedAdvisor/checklistperformance/checklistperformance.puml
!includeurl AWSPUML/ManagementTools/AWSTrustedAdvisor/checklistsecurity/checklistsecurity.puml

package "ManagementTools" {
    AWSTRUSTEDADVISOR("AWSTRUSTEDADVISOR") {
        CHECKLIST("CHECKLIST")
        CHECKLISTCOST("CHECKLISTCOST")
        CHECKLISTFAULTTOLERANCE("CHECKLISTFAULTTOLERANCE")
        CHECKLISTPERFORMANCE("CHECKLISTPERFORMANCE")
        CHECKLISTSECURITY("CHECKLISTSECURITY")
    }
}

@enduml
```

![ManagementTools-AWSTrustedAdvisor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/6f6c21f7-7cb9-cc99-ae2e-3dd17b3e5b17.png)

### その他

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/ManagementTools/AWSCloudTrail/AWSCloudTrail.puml
!includeurl AWSPUML/ManagementTools/AWSConfig/AWSConfig.puml
!includeurl AWSPUML/ManagementTools/AWSManagedServices/AWSManagedServices.puml
!includeurl AWSPUML/ManagementTools/AWSServiceCatalog/AWSServiceCatalog.puml

package "ManagementTools" {
    AWSCLOUDTRAIL("AWSCLOUDTRAIL")
    AWSCONFIG("AWSCONFIG")
    AWSMANAGEDSERVICES("AWSMANAGEDSERVICES")
    AWSSERVICECATALOG("AWSSERVICECATALOG")
}

@enduml
```

![ManagementTools-Others.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/72222dff-8bc3-3171-e5b4-aec94946a148.png)

## Messaging

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/Messaging/AmazonPinpoint/AmazonPinpoint.puml

!includeurl AWSPUML/Messaging/AmazonSES/AmazonSES.puml
!includeurl AWSPUML/Messaging/AmazonSES/email/email.puml

!includeurl AWSPUML/Messaging/AmazonSNS/AmazonSNS.puml
!includeurl AWSPUML/Messaging/AmazonSNS/HTTPnotification/HTTPnotification.puml
!includeurl AWSPUML/Messaging/AmazonSNS/emailnotification/emailnotification.puml
!includeurl AWSPUML/Messaging/AmazonSNS/topic/topic.puml

!includeurl AWSPUML/Messaging/AmazonSQS/AmazonSQS.puml
!includeurl AWSPUML/Messaging/AmazonSQS/message/message.puml
!includeurl AWSPUML/Messaging/AmazonSQS/queue/queue.puml

package "Messaging" {
    AMAZONPINPOINT("AMAZONPINPOINT")
    MESSAGING_AMAZONPINPOINT("MESSAGING_AMAZONPINPOINT")

    AMAZONSES("AMAZONSES") {
        EMAIL("EMAIL")
    }

    AMAZONSNS("AMAZONSNS") {
        HTTPNOTIFICATION("HTTPNOTIFICATION")
        EMAILNOTIFICATION("EMAILNOTIFICATION")
        TOPIC("TOPIC")
        AMAZONSNS_TOPIC("AMAZONSNS_TOPIC")
    }

    AMAZONSQS("AMAZONSQS") {
        MESSAGE("MESSAGE")
        QUEUE("QUEUE")
    }
}

@enduml
```

![Messaging.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/9eb62e2e-3e71-8385-6955-cf4b220199f8.png)

## Migration

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/Migration/AWSApplicationDiscoveryService/AWSApplicationDiscoveryService.puml

!includeurl AWSPUML/Migration/AWSDMS/AWSDMS.puml
!includeurl AWSPUML/Migration/AWSDMS/databasemigrationworkflow_job/databasemigrationworkflow_job.puml

!includeurl AWSPUML/Migration/AWSMigrationHub/AWSMigrationHub.puml

!includeurl AWSPUML/Migration/AWSSMS/AWSSMS.puml

!includeurl AWSPUML/Migration/AWSSnowball/AWSSnowball.puml
!includeurl AWSPUML/Migration/AWSSnowball/importexport/importexport.puml

package "Migration" {
    AWSAPPLICATIONDISCOVERYSERVICE("AWSAPPLICATIONDISCOVERYSERVICE")

    AWSDMS("AWSDMS") {
        DATABASEMIGRATIONWORKFLOW_JOB("DATABASEMIGRATIONWORKFLOW_JOB")
    }
    MIGRATION_AWSDMS("MIGRATION_AWSDMS") {
        DATABASEMIGRATIONWORKFLOW_JOB("DATABASEMIGRATIONWORKFLOW_JOB")
    }

    AWSMIGRATIONHUB("AWSMIGRATIONHUB")

    AWSSMS("AWSSMS")

    AWSSNOWBALL("AWSSNOWBALL") {
        IMPORTEXPORT("IMPORTEXPORT")
        MIGRATION_AWSSNOWBALL_IMPORTEXPORT("MIGRATION_AWSSNOWBALL_IMPORTEXPORT")
    }
    MIGRATION_AWSSNOWBALL("MIGRATION_AWSSNOWBALL") {
        IMPORTEXPORT("IMPORTEXPORT")
        MIGRATION_AWSSNOWBALL_IMPORTEXPORT("MIGRATION_AWSSNOWBALL_IMPORTEXPORT")
    }
}

@enduml
```

![Migration.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/17a97216-3d74-66ca-1331-9b511916d85d.png)

## MobileServices

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/MobileServices/AWSDeviceFarm/AWSDeviceFarm.puml

!includeurl AWSPUML/MobileServices/AWSMobileHub/AWSMobileHub.puml

!includeurl AWSPUML/MobileServices/AmazonAPIGateway/AmazonAPIGateway.puml

!includeurl AWSPUML/MobileServices/AmazonCognito/AmazonCognito.puml

!includeurl AWSPUML/MobileServices/AmazonMobileAnalytics/AmazonMobileAnalytics.puml

!includeurl AWSPUML/MobileServices/AmazonPinpoint/AmazonPinpoint.puml

package "MobileServices" {
    AWSDEVICEFARM("AWSDEVICEFARM")

    AWSMOBILEHUB("AWSMOBILEHUB")

    AMAZONAPIGATEWAY("AMAZONAPIGATEWAY")

    AMAZONCOGNITO("AMAZONCOGNITO")

    AMAZONMOBILEANALYTICS("AMAZONMOBILEANALYTICS")

    AMAZONPINPOINT("AMAZONPINPOINT")
    MOBILESERVICES_AMAZONPINPOINT("MOBILESERVICES_AMAZONPINPOINT")
}

@enduml
```

![MobileServices.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/2e2e731d-b206-c4de-d5a7-93ab11ee5cd5.png)

## NetworkingContentDelivery

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/NetworkingContentDelivery/AWSDirectConnect/AWSDirectConnect.puml

!includeurl AWSPUML/NetworkingContentDelivery/AmazonCloudFront/AmazonCloudFront.puml
!includeurl AWSPUML/NetworkingContentDelivery/AmazonCloudFront/downloaddistribution/downloaddistribution.puml
!includeurl AWSPUML/NetworkingContentDelivery/AmazonCloudFront/edgelocation/edgelocation.puml
!includeurl AWSPUML/NetworkingContentDelivery/AmazonCloudFront/streamingdistribution/streamingdistribution.puml

!includeurl AWSPUML/NetworkingContentDelivery/AmazonRoute53/AmazonRoute53.puml
!includeurl AWSPUML/NetworkingContentDelivery/AmazonRoute53/hostedzone/hostedzone.puml
!includeurl AWSPUML/NetworkingContentDelivery/AmazonRoute53/routetable/routetable.puml

!includeurl AWSPUML/NetworkingContentDelivery/ElasticLoadBalancing/ElasticLoadBalancing.puml
!includeurl AWSPUML/NetworkingContentDelivery/ElasticLoadBalancing/ApplicationLoadBalancer/ApplicationLoadBalancer.puml
!includeurl AWSPUML/NetworkingContentDelivery/ElasticLoadBalancing/ClassicLoadBalancer/ClassicLoadBalancer.puml

package "NetworkingContentDelivery" {
    AWSDIRECTCONNECT("AWSDIRECTCONNECT")

    AMAZONCLOUDFRONT("AMAZONCLOUDFRONT") {
        DOWNLOADDISTRIBUTION("DOWNLOADDISTRIBUTION")
        EDGELOCATION("EDGELOCATION")
        STREAMINGDISTRIBUTION("STREAMINGDISTRIBUTION")
    }

    AMAZONROUTE53("AMAZONROUTE53") {
        HOSTEDZONE("HOSTEDZONE")
        ROUTETABLE("ROUTETABLE")
    }

    ELASTICLOADBALANCING("ELASTICLOADBALANCING") {
        APPLICATIONLOADBALANCER("APPLICATIONLOADBALANCER")
        NETWORKINGCONTENTDELIVERY_ELASTICLOADBALANCING_APPLICATIONLOADBALANCER("NETWORKINGCONTENTDELIVERY_ELASTICLOADBALANCING_APPLICATIONLOADBALANCER")
        CLASSICLOADBALANCER("CLASSICLOADBALANCER")
    }
}

@enduml
```

![NetworkingContentDelivery.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/7630e914-13d1-466d-1f0e-dcd94638f659.png)

## OnDemandWorkforce

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/OnDemandWorkforce/AmazonMechanicalTurk/AmazonMechanicalTurk.puml
!includeurl AWSPUML/OnDemandWorkforce/AmazonMechanicalTurk/assignmenttask/assignmenttask.puml
!includeurl AWSPUML/OnDemandWorkforce/AmazonMechanicalTurk/humanintelligencetasks/humanintelligencetasks.puml
!includeurl AWSPUML/OnDemandWorkforce/AmazonMechanicalTurk/requester/requester.puml
!includeurl AWSPUML/OnDemandWorkforce/AmazonMechanicalTurk/workers/workers.puml

package "OnDemandWorkforce" {
    AMAZONMECHANICALTURK("AMAZONMECHANICALTURK") {
        ASSIGNMENTTASK("ASSIGNMENTTASK")
        HUMANINTELLIGENCETASKS("HUMANINTELLIGENCETASKS")
        REQUESTER("REQUESTER")
        WORKERS("WORKERS")
    }
}

@enduml
```

![OnDemandWorkforce.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/dd93c9ec-fe92-5af2-043a-9354d7dd03fa.png)

## SecurityIdentityCompliance

### AWSIAM

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/SecurityIdentityCompliance/AWSIAM/AWSIAM.puml
!includeurl AWSPUML/SecurityIdentityCompliance/AWSIAM/AWSSTS/AWSSTS.puml
!includeurl AWSPUML/SecurityIdentityCompliance/AWSIAM/AWSSTS_2/AWSSTS_2.puml
!includeurl AWSPUML/SecurityIdentityCompliance/AWSIAM/addon/addon.puml
!includeurl AWSPUML/SecurityIdentityCompliance/AWSIAM/dataencryptionkey/dataencryptionkey.puml
!includeurl AWSPUML/SecurityIdentityCompliance/AWSIAM/encrypteddata/encrypteddata.puml

package "SecurityIdentityCompliance" {
    AWSIAM("AWSIAM") {
        AWSSTS("AWSSTS")
        AWSSTS_2("AWSSTS_2")
        ADDON("ADDON")
        DATAENCRYPTIONKEY("DATAENCRYPTIONKEY")
        ENCRYPTEDDATA("ENCRYPTEDDATA")
    }
}

@enduml
```

![SecurityIdentityCompliance-AWSIAM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/9c48ef3d-3c95-f37a-e078-da74c64a65cb.png)

### IAM

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/SecurityIdentityCompliance/IAM/MFAtoken/MFAtoken.puml
!includeurl AWSPUML/SecurityIdentityCompliance/IAM/long_termsecuritycredential/long_termsecuritycredential.puml
!includeurl AWSPUML/SecurityIdentityCompliance/IAM/permissions/permissions.puml
!includeurl AWSPUML/SecurityIdentityCompliance/IAM/role/role.puml
!includeurl AWSPUML/SecurityIdentityCompliance/IAM/temporarysecuritycredential/temporarysecuritycredential.puml

package "SecurityIdentityCompliance" {
    package "IAM" {
        MFATOKEN("MFATOKEN")
        LONG_TERMSECURITYCREDENTIAL("LONG_TERMSECURITYCREDENTIAL")
        PERMISSIONS("PERMISSIONS")
        IAM_PERMISSIONS("IAM_PERMISSIONS")
        ROLE("ROLE")
        TEMPORARYSECURITYCREDENTIAL("TEMPORARYSECURITYCREDENTIAL")
    }
}

@enduml
```

![SecurityIdentityCompliance-IAM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/7fdd4a70-12be-a719-2dd1-233c8c8853c5.png)

### その他

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/SecurityIdentityCompliance/ACM/certificatemanager/certificatemanager.puml

!includeurl AWSPUML/SecurityIdentityCompliance/AWSArtifact/AWSArtifact.puml

!includeurl AWSPUML/SecurityIdentityCompliance/AWSCertificateManager/AWSCertificateManager.puml
!includeurl AWSPUML/SecurityIdentityCompliance/AWSCertificateManager/certificatemanager/certificatemanager.puml

!includeurl AWSPUML/SecurityIdentityCompliance/AWSCloudHSM/AWSCloudHSM.puml

!includeurl AWSPUML/SecurityIdentityCompliance/AWSDirectoryService/AWSDirectoryService.puml

!includeurl AWSPUML/SecurityIdentityCompliance/AWSKMS/AWSKMS.puml

!includeurl AWSPUML/SecurityIdentityCompliance/AWSOrganizations/AWSOrganizations.puml

!includeurl AWSPUML/SecurityIdentityCompliance/AWSShield/AWSShield.puml

!includeurl AWSPUML/SecurityIdentityCompliance/AWSWAF/AWSWAF.puml
!includeurl AWSPUML/SecurityIdentityCompliance/AWSWAF/filteringrule/filteringrule.puml

!includeurl AWSPUML/SecurityIdentityCompliance/AmazonCloudDirectory/AmazonCloudDirectory.puml

!includeurl AWSPUML/SecurityIdentityCompliance/AmazonInspector/AmazonInspector.puml
!includeurl AWSPUML/SecurityIdentityCompliance/AmazonInspector/agent/agent.puml

!includeurl AWSPUML/SecurityIdentityCompliance/AmazonMacie/AmazonMacie.puml

package "SecurityIdentityCompliance" {
    CERTIFICATEMANAGER("CERTIFICATEMANAGER")
    ACM_CERTIFICATEMANAGER("ACM_CERTIFICATEMANAGER")

    AWSARTIFACT("AWSARTIFACT")

    AWSCERTIFICATEMANAGER("AWSCERTIFICATEMANAGER") {
        CERTIFICATEMANAGER("CERTIFICATEMANAGER")
        AWSCERTIFICATEMANAGER_CERTIFICATEMANAGER("AWSCERTIFICATEMANAGER_CERTIFICATEMANAGER")
    }

    AWSCLOUDHSM("AWSCLOUDHSM")

    AWSDIRECTORYSERVICE("AWSDIRECTORYSERVICE")

    AWSKMS("AWSKMS")

    AWSORGANIZATIONS("AWSORGANIZATIONS")

    AWSSHIELD("AWSSHIELD")

    AWSWAF("AWSWAF") {
        FILTERINGRULE("FILTERINGRULE")
    }

    AMAZONCLOUDDIRECTORY("AMAZONCLOUDDIRECTORY")

    AMAZONINSPECTOR("AMAZONINSPECTOR") {
        AGENT("AGENT")
    }

    AMAZONMACIE("AMAZONMACIE")
}

@enduml
```

![SecurityIdentityCompliance.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/927ccc97-e806-2ca2-bb5d-76e11c41f499.png)

## Storage

### S3

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/Storage/AmazonS3/AmazonS3.puml
!includeurl AWSPUML/Storage/AmazonS3/bucket/bucket.puml
!includeurl AWSPUML/Storage/AmazonS3/bucketwithobjects/bucketwithobjects.puml
!includeurl AWSPUML/Storage/AmazonS3/object/object.puml

package "Storage" {
    AMAZONS3("AMAZONS3") {
        BUCKET("BUCKET")
        BUCKETWITHOBJECTS("BUCKETWITHOBJECTS")
        OBJECT("OBJECT")
    }
}

@enduml
```

![Storage-S3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/4706982e-b421-e0b6-41d7-f1563ee31e3a.png)

### StorageGateway

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/Storage/AWSStorageGateway/AWSStorageGateway.puml
!includeurl AWSPUML/Storage/AWSStorageGateway/cachedvolume/cachedvolume.puml
!includeurl AWSPUML/Storage/AWSStorageGateway/non_cachedvolume/non_cachedvolume.puml
!includeurl AWSPUML/Storage/AWSStorageGateway/virtualtapelibrary/virtualtapelibrary.puml

package "Storage" {
    AWSSTORAGEGATEWAY("AWSSTORAGEGATEWAY") {
        CACHEDVOLUME("CACHEDVOLUME")
        NON_CACHEDVOLUME("NON_CACHEDVOLUME")
        VIRTUALTAPELIBRARY("VIRTUALTAPELIBRARY")
    }
}

@enduml
```

![Storage-StorageGateway.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/58643f3c-cc6a-035a-075c-4cf8e3c55624.png)

### その他

```
@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/18-2-22/dist

!includeurl AWSPUML/common.puml

!includeurl AWSPUML/Storage/AWSSnowball/AWSSnowball.puml
!includeurl AWSPUML/Storage/AWSSnowball/importexport/importexport.puml

!includeurl AWSPUML/Storage/AmazonEBS/AmazonEBS.puml

!includeurl AWSPUML/Storage/AmazonEFS/AmazonEFS.puml
!includeurl AWSPUML/Storage/AmazonEFS/EFSfilesystem/EFSfilesystem.puml

!includeurl AWSPUML/Storage/AmazonGlacier/AmazonGlacier.puml
!includeurl AWSPUML/Storage/AmazonGlacier/archive/archive.puml
!includeurl AWSPUML/Storage/AmazonGlacier/vault/vault.puml

!includeurl AWSPUML/Storage/snapshot/snapshot.puml
!includeurl AWSPUML/Storage/volume/volume.puml

package "Storage" {
    AWSSNOWBALL("AWSSNOWBALL") {
        IMPORTEXPORT("IMPORTEXPORT")
        STORAGE_AWSSNOWBALL_IMPORTEXPORT("STORAGE_AWSSNOWBALL_IMPORTEXPORT")
    }
    STORAGE_AWSSNOWBALL("STORAGE_AWSSNOWBALL") {
        IMPORTEXPORT("IMPORTEXPORT")
        STORAGE_AWSSNOWBALL_IMPORTEXPORT("STORAGE_AWSSNOWBALL_IMPORTEXPORT")
    }

    AMAZONEBS("AMAZONEBS")

    AMAZONEFS("AMAZONEFS") {
        EFSFILESYSTEM("EFSFILESYSTEM")
    }

    AMAZONGLACIER("AMAZONGLACIER") {
        ARCHIVE("ARCHIVE")
        VAULT("VAULT")
    }

    SNAPSHOT("SNAPSHOT")

    VOLUME("VOLUME")
}

@enduml
```

![Storage.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180599/376c05e6-c8d8-6bb2-4e6f-6840f2090fdf.png)

# 備考

今回のPlantUMLファイルと生成画像の一式は↓に上げてある。
https://github.com/sky0621/try-plantuml/tree/master/aws

ふと思ったけど、Terraformのテンプレートファイルを読み込んでPlantUMLのpumlファイルに変換するコンバーターでもあれば、Terraformのコード書いたらそのままAWS上、どのように表現されるか可視化されるのでは？
`terraform graph`で依存関係の線は可視化できるけど、アーキテクチャ図みたいなものまでは出来ないし。
何か既存でツールあるのかな。フリーで。
ないなら、コンバーター作りを試みようか。。。