1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

awsdac使ってみたけど、まだハマらなかった話

1
Posted at

はじめに

最近話題になっている awsdac(AWS Diagram as Code) を触ってみました。
結論から言うと、

  • AIとの相性はかなり良い
  • Git管理できるのは強い
  • でも「クライアント向け資料」としては少し悩ましい

という感想でした。
あくまで 1回試しただけの体験談 です。

なぜ触ってみたのか

正直な動機はシンプルです。

  • 手で作るより速そう
  • AIと相性が良さそう
  • 話題になっていたから触ってみたかった

既存の作図ツールに強い不満があったわけではありません。
話題になっていたのが一番大きかったかもしれません。

まずはSkill Builderの図を模倣してみた

とりあえず使ってみよう、ということで
AWS Skill Builderで見かけたアーキテクチャ図を模倣してみました。

参考にしたアーキテクチャ図

XZd9jbE0HCBbkzLa_QbqpbZAyfwwqgi-D.gif

awsdacで描いたアーキテクチャ図

output_fsx.png

「どっちが良い?」と聞かれたら参考にしたアーキテクチャ図の方を選びますよね。

diagram.yaml

人人人人人人人人人人人人人人人人人人人人人人人_
>        ソースコードを表示(折りたたみ)      <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
diagram.yaml
Diagram:
  DefinitionFiles:
    - Type: URL
      Url: https://raw.githubusercontent.com/awslabs/diagram-as-code/main/definitions/definition-for-aws-icons-light.yaml
  Resources:
    Canvas:
      Type: AWS::Diagram::Canvas
      Direction: horizontal  # or vertical
      Children:
        - AWSCloud
        - AWSConnectionGroup
        - OnPrem

    AWSCloud:
      Type: AWS::Diagram::Cloud
      Direction: vertical
      Preset: AWSCloudNoLogo
      Children:
        - VPC
        - ALB

    VPC:
      Type: AWS::EC2::VPC
      Preset: VPC
      Children:
        - AZ1
        - AZ2

    AZ1:
      Type: AWS::EC2::AvailabilityZone
      Title: アベイラビリティゾーン 1
      Preset: Availability Zone 1
      Direction: vertical
      Children:
        - HostsGroup
        - ENI
        - Subnet1
        
    HostsGroup:
      Type: AWS::Diagram::HorizontalStack
      Children:
        - Host1
        - Host2

    Host1:
      Type: AWS::EC2::Host
      Title: " " # スペースを入れることで擬似的な空を設定
      Preset: Host

    Host2:
      Type: AWS::EC2::Host
      Title: " "
      Preset: Host

    ENI:
      Type: AWS::EC2::NetworkInterface
      Preset: Network Interface

    Subnet1:
      Type: AWS::EC2::Subnet
      Preset: Subnet
      Children:
        - FSx

    FSx:
      Type: AWS::FSx::FileSystemforWindows
      Preset: FSx for Windows
      Direction: vertical  
      Children:
        - WindowsFileServer
        - VolumesGroup

    WindowsFileServer:
      Type: AWS::EC2::Instance
      Title: "Windowsファイルサーバ"
      Preset: FSx for Windows

    VolumesGroup:
      Type: AWS::Diagram::HorizontalStack
      Children:
        - FSxVolume1
        - FSxVolume2

    FSxVolume1:
      Type: AWS::Diagram::Resource
      Title: " "
      Preset: Database

    FSxVolume2:
      Type: AWS::Diagram::Resource
      Title: " "
      Preset: Database

    AZ2:
      Type: AWS::EC2::AvailabilityZone
      Title: アベイラビリティゾーン 2
      Preset: Availability Zone 2
      Children:
        - Host3

    Host3:
      Type: AWS::EC2::Host
      Title: " "
      Preset: Host

    AWSConnectionGroup:
      Type: AWS::Diagram::VerticalStack
      Children:
        - DirectConnect
        - VPN

    DirectConnect:
      Type: AWS::Diagram::Resource
      Title: " "
      Preset: AWS Direct Connect

    VPN:
      Type: AWS::EC2::VPNGateway
      Title: "AWS Direct Connect または VPN"
      Preset: VPN

    OnPrem:
      Type: AWS::Diagram::DataCenter
      Title: オンプレミス
      Direction: vertical
      Children:
        - OnPremClientGroup

    OnPremClientGroup:
      Type: AWS::Diagram::HorizontalStack
      Children:
        - OnPremClient1
        - OnPremClient2

    OnPremClient1:
      Type: AWS::Diagram::Resource
      Preset: User
      Title: " "

    OnPremClient2:
      Type: AWS::Diagram::Resource
      Preset: User
      Title: " "

  Links:
    - Source: Host1
      SourcePosition: S      # N, S, E, W, NE, NW, SE, SW
      Target: ENI
      TargetPosition: N
      TargetArrowHead:
        Type: Open
    
    - Source: Host2
      SourcePosition: S      # N, S, E, W, NE, NW, SE, SW
      Target: ENI
      TargetPosition: N
      TargetArrowHead:
        Type: Open

    - Source: Host3
      SourcePosition: W      # N, S, E, W, NE, NW, SE, SW
      Target: ENI
      TargetPosition: E
      TargetArrowHead:
        Type: Open

    - Source: ENI
      SourcePosition: S      # N, S, E, W, NE, NW, SE, SW
      Target: FSx
      TargetPosition: N
      TargetArrowHead:
        Type: Open

    - Source: FSxVolume1
      SourcePosition: E      # N, S, E, W, NE, NW, SE, SW
      Target: FSxVolume2
      TargetPosition: W
      TargetArrowHead:
        Type: Open

    - Source: FSxVolume2
      SourcePosition: W      # N, S, E, W, NE, NW, SE, SW
      Target: FSxVolume1
      TargetPosition: E
      TargetArrowHead:
        Type: Open

    - Source: OnPrem
      SourcePosition: W      # オンプレ → AWS への接続
      Target: DirectConnect
      TargetPosition: E
      TargetArrowHead:
        Type: Open

    - Source: DirectConnect
      SourcePosition: W      # N, S, E, W, NE, NW, SE, SW
      Target: ENI
      TargetPosition: E
      TargetArrowHead:
        Type: Open

吹き出しはこちらを参照しました

やってみて感じたこと

  • 位置関係は意外と書きやすい
  • でもリソース名を調べるのが大変
    • AWS::EC2::VPN のような正式名称を調べるのに時間がかかりました
    • これは awsdac の問題というより、自分のAWS習熟度の問題です
  • AIとの相性はかなり良い

AIとの相性はやはり良かったです。
AIに「オンプレの部分を書いて」と依頼したらデータセンターやユーザのリソース名を調べて書いてくれました。
さらに何度か修正を指示することで最終的にはゴールできました。

刺さらなかった理由

① 手で描いた方が早い気がした(1回目)

これは完全に体感です。

まだ1回しか試していないので習熟すれば逆転する可能性はあります。
ただ初回体験としては「おお、爆速だ」という感じではありませんでした。

② 図が機械的に見える

線がすべて直線でどうしても少し無機質に感じました。
美しさを求めているわけではありませんが、

  • クライアントに見せる
  • 提案資料に載せる
  • 安心感を与える

という観点で考えると、

「これをそのまま出して良いのか?」

という迷いはありました。
ここが少々自問自答しているポイントです。

結論

はじめに書いたように自分の評価は以下です。

  • AIとの相性はかなり良い
  • Git管理できるのは強い
  • でも「クライアント向け資料」としては少し悩ましい

今後さらに使い込むことで印象は変わるかもしれません。
もう少しAWS理解度が上がった状態で再挑戦してみたいと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?