NetApp BlueXPでAmazon FSx for NetApp ONTAPの操作をしてみた

FSxNをGUIでサクッと管理したい時に
2023.09.22

GUIでAmazon FSx for NetApp ONTAPを管理したい

こんにちは、のんピ(@non____97)です。

皆さんはGUIでAmazon FSx for NetApp ONTAP(以降FSxN)を管理したいなと思ったことはありますか? 私はあります。

FSxNではNetApp BlueXP(以降BlueXP)というNetAppのSaaSを使うことによって、Webブラウザ上でFSxNの操作を行うことが可能です。BlueXPの説明は以下記事をご覧ください。

実際にBlueXPのセットアップした際の手順を紹介します。

いきなりまとめ

  • BlueXPをセットアップして、FSxNを操作できるまでの手順は以下のとおり
    1. NetAppのアカウント作成および、NetApp BlueXPにサインイン
    2. BlueXPとAWSアカウント連携用のIAMロールの作成と連携
    3. BlueXP Connectorの作成
  • BlueXPでFSxNを管理する際は、実質BlueXP Connecotrが必須

NetAppのアカウント作成

まず、NetAppアカウントの作成をします。

https://bluexp.netapp.com/ja/ にアクセスします。

1.NetApp_BlueXP™_-_データ_エステートの運用をシンプルに

利用を開始をクリックすると、ログインページが表示されます。

2.Log in to NetApp BlueXP

Sign upをクリックして、アカウント入力フォームが表示されます。各種情報を入力してSign upをクリックします。

Sign up to NetApp BlueXP

Eメールが届くので、Eメールのリンクをクリックして、認証をします。

続いて、作成したアカウントを使ってサインインします。

3.NetApp_BlueXP

Welcomeされました。

BlueXPとAWSアカウント連携用のIAMロールの作成と連携

次に、BlueXPとAWSアカウント連携用のIAMロールの作成と連携をします。

BlueXPとAWSアカウントの連携ができなければ、当然ですがFSxNの操作を行うことができません。

試しに、BlueXPとAWSアカウントの連携をせずに、FSxNを作成しようとしてみます。

Add working environmentをクリックします。

AWSを選択して、Amazon FSx for ONTAPのAdd newをクリックします。

4.Add Working Environment

はい、「AWSへの許可を提供する必要があるため、BlueXP用のIAMロールを登録しろ」とのメッセージが表示されNextをクリックすることができません。

5.FSx for ONTAP Authentication

IAMロールを作ってあげましょう。BlueXPRoleというIAMロールを作成します。

8.IAMロールの作成

許可するAWSアカウントは952013314444です。

また、IAMポリシーは以下のとおりです。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "fsx:*",
                "ec2:Describe*",
                "ec2:CreateTags",
                "iam:CreateServiceLinkedRole",
                "kms:Describe*",
                "kms:List*",
                "kms:CreateGrant"
            ],
            "Resource": "*"
        }
    ]
}

こちらの情報は以下NetApp公式ドキュメントに記載があります。

IAMロールの作成後、BlueXPコンソールの右上にある歯車アイコンをクリックし、Credentialsをクリックします。

Credentials

Account credentialsAdd Credentialsをクリックします。

6.Add Credentials

AWS - BlueXPを選択してNextをクリックします。

7.Choose how to associate the credentials

先ほど作成したIAMロールのARNや外部IDを入力します。Credential NameはBlueXP Roleとしました。

9.Define Amazon Web Services Credentials

レビュー画面で最終確認し、Addをクリックします。

10.Review

Credential一覧に先ほど作成されたCredentialが表示されました。

11.BlueXP and the Connector use account-level credentials to deploy and manage resources in your cloud environment.

こちらまで完了すると、S3を認識しようとしていました。なお、IAMロールにS3の権限を渡していないので表示はできていません。

13.Canvas

FSxNの作成

Credentialを作成したので、FSxNを作成しようとしてみます。

先ほど作成したCredentialを選択してNextをクリックします。

12.Select credentials that grant BlueXP the permissions required to manage FSx for ONTAP. For more information,

ファイルシステム名やメンテナンスウィンドウ、fsxadminの認証情報などを入力してNextをクリックします。

14.Details and Credentials

続いて、VPCの設定をしようとするとサポートされているリージョンの取得に失敗していました。

15.Failed to get supported region

BlueXP Connectorの作成

「ここでBlueXP Connectorの出番か!!」と思い、BlueXP Connectorを作成します。

本当は先ほど作成したBlueXPのRoleに`ec2:DescribeRegions`など必要な権限をIAMポリシーに付与してあげれば良いだけです。FSxNを作成するだけであれば、BlueXP Connectorをこのタイミングで作成する必要はありません。

ジョブメニューのConnectorからCreate your first Connectorをクリックします。

16.Create your first Connector

ProviderでAWSを選択してContinueをクリックします。

17.Add BlueXP Connector

デプロイのプロセスが表示されます。Continueをクリックします。

18.Deploying a BlueXP Connector

BlueXP Connectorをセットアップするにあたって必要なIAMポリシーが表示されます。

19.Setup Permissions and Policy

IAMポリシー全文は以下のとおりです。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:CreateRole",
        "iam:DeleteRole",
        "iam:PutRolePolicy",
        "iam:CreateInstanceProfile",
        "iam:DeleteRolePolicy",
        "iam:AddRoleToInstanceProfile",
        "iam:RemoveRoleFromInstanceProfile",
        "iam:DeleteInstanceProfile",
        "iam:PassRole",
        "iam:ListRoles",
        "ec2:DescribeInstanceStatus",
        "ec2:RunInstances",
        "ec2:ModifyInstanceAttribute",
        "ec2:CreateSecurityGroup",
        "ec2:DeleteSecurityGroup",
        "ec2:DescribeSecurityGroups",
        "ec2:RevokeSecurityGroupEgress",
        "ec2:AuthorizeSecurityGroupEgress",
        "ec2:AuthorizeSecurityGroupIngress",
        "ec2:RevokeSecurityGroupIngress",
        "ec2:CreateNetworkInterface",
        "ec2:DescribeNetworkInterfaces",
        "ec2:DeleteNetworkInterface",
        "ec2:ModifyNetworkInterfaceAttribute",
        "ec2:DescribeSubnets",
        "ec2:DescribeVpcs",
        "ec2:DescribeDhcpOptions",
        "ec2:DescribeKeyPairs",
        "ec2:DescribeRegions",
        "ec2:DescribeInstances",
        "ec2:CreateTags",
        "ec2:DescribeImages",
        "cloudformation:CreateStack",
        "cloudformation:DeleteStack",
        "cloudformation:DescribeStacks",
        "cloudformation:DescribeStackEvents",
        "cloudformation:ValidateTemplate",
        "ec2:AssociateIamInstanceProfile",
        "ec2:DescribeIamInstanceProfileAssociations",
        "ec2:DisassociateIamInstanceProfile",
        "iam:GetRole",
        "iam:TagRole",
        "kms:ListAliases",
        "cloudformation:ListStacks"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:TerminateInstances"
      ],
      "Condition": {
        "StringLike": {
          "ec2:ResourceTag/OCCMInstance": "*"
        }
      },
      "Resource": [
        "arn:aws:ec2:*:*:instance/*"
      ]
    }
  ]
}

こちらのIAMポリシーが付与されたIAMロールBlueXP Connector Roleを作成しました。

新規にIAMロールを作成せずに、最初に作成したIAMロールにアタッチする形でも良いです。むしろ、BlueXP Connectorを作るためのIAMロールなのか、BlueXP Connector自身が使うIAMロールなのか分かりづらいので、1つのIAMロールにアタッチする方が分かりやすいかと思います

作成したIAMロールをCredentialとして登録します。

20. BlueXP Connector Role

BlueXP Connectorの作成ウィザードに戻ります。

デプロイ先のリージョンと先ほど作成したCredentialを選択してNextをクリックします。

21.AWS Authentication

BlueXP Connectorのインスタンス名とBlueXP Connectorにアタッチされるインスタンス名を入力してNextをクリックします。

22.Details

VPCやサブネット、キーペア、パブリックIPアドレスの有無、HTTPプロキシの設定をしてNextをクリックします。キーペアは事前に作成しておきましょう。

23.Network

Security Groupのインバウンドルールで許可するネットワークアドレスを入力します。インターネットからBlueXP Connectorに対してインバウンドでの通信は発生しないので、VPCのCIDRなど限られたネットワークのみ許可すれば問題ありません。

24.Security Group

作成するBlueXP Connectorの確認をしてAddをクリックします。

25.Add BlueXP Connector - AWS_Review

デプロイまで待ちます。5分ほどかかりました。

26.Deploying a BlueXP Connector

作成完了すると、Connector Successfully Createdと表示されます。

30.Connector Successfully Created

作成されたBlueXP Connector関連のリソースを確認します。

IAMロールには2つのインラインポリシーがアタッチされていました。

27.BlueXP-Connector-non-97

それぞれのポリシーは以下のとおりです。長すぎたので折りたたんでいます。

- BlueXPConnectorInstanceBlueXP_Policy_I
{
  "Statement": [
      {
          "Action": [
              "ec2:DescribeInstances",
              "ec2:DescribeInstanceStatus",
              "ec2:RunInstances",
              "ec2:ModifyInstanceAttribute",
              "ec2:DescribeInstanceAttribute",
              "ec2:DescribeRouteTables",
              "ec2:DescribeImages",
              "ec2:CreateTags",
              "ec2:CreateVolume",
              "ec2:DescribeVolumes",
              "ec2:ModifyVolumeAttribute",
              "ec2:CreateSecurityGroup",
              "ec2:DescribeSecurityGroups",
              "ec2:RevokeSecurityGroupEgress",
              "ec2:AuthorizeSecurityGroupEgress",
              "ec2:AuthorizeSecurityGroupIngress",
              "ec2:RevokeSecurityGroupIngress",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:ModifyNetworkInterfaceAttribute",
              "ec2:DescribeSubnets",
              "ec2:DescribeVpcs",
              "ec2:DescribeDhcpOptions",
              "ec2:CreateSnapshot",
              "ec2:DescribeSnapshots",
              "ec2:GetConsoleOutput",
              "ec2:DescribeKeyPairs",
              "ec2:DescribeRegions",
              "ec2:DescribeTags",
              "ec2:AssociateIamInstanceProfile",
              "ec2:DescribeIamInstanceProfileAssociations",
              "ec2:DisassociateIamInstanceProfile",
              "ec2:CreatePlacementGroup",
              "ec2:DescribeReservedInstancesOfferings",
              "ec2:AssignPrivateIpAddresses",
              "ec2:CreateRoute",
              "ec2:DescribeVpcs",
              "ec2:ReplaceRoute",
              "ec2:UnassignPrivateIpAddresses",
              "ec2:DeleteSecurityGroup",
              "ec2:DeleteNetworkInterface",
              "ec2:DeleteSnapshot",
              "ec2:DeleteTags",
              "ec2:DeleteRoute",
              "ec2:DeletePlacementGroup",
              "ec2:DescribePlacementGroups",
              "ec2:DescribeVolumesModifications",
              "ec2:ModifyVolume",
              "cloudformation:CreateStack",
              "cloudformation:DescribeStacks",
              "cloudformation:DescribeStackEvents",
              "cloudformation:ValidateTemplate",
              "cloudformation:DeleteStack",
              "iam:PassRole",
              "iam:CreateRole",
              "iam:PutRolePolicy",
              "iam:CreateInstanceProfile",
              "iam:AddRoleToInstanceProfile",
              "iam:RemoveRoleFromInstanceProfile",
              "iam:ListInstanceProfiles",
              "iam:DeleteRole",
              "iam:DeleteRolePolicy",
              "iam:DeleteInstanceProfile",
              "iam:GetRolePolicy",
              "iam:GetRole",
              "sts:DecodeAuthorizationMessage",
              "sts:AssumeRole",
              "s3:GetBucketTagging",
              "s3:GetBucketLocation",
              "s3:ListBucket",
              "s3:CreateBucket",
              "s3:GetLifecycleConfiguration",
              "s3:ListBucketVersions",
              "s3:GetBucketPolicyStatus",
              "s3:GetBucketPublicAccessBlock",
              "s3:GetBucketPolicy",
              "s3:GetBucketAcl",
              "s3:PutObjectTagging",
              "s3:GetObjectTagging",
              "s3:DeleteObject",
              "s3:DeleteObjectVersion",
              "s3:PutObject",
              "s3:ListAllMyBuckets",
              "s3:GetObject",
              "s3:GetEncryptionConfiguration",
              "kms:List*",
              "kms:ReEncrypt*",
              "kms:Describe*",
              "kms:CreateGrant",
              "ce:GetReservationUtilization",
              "ce:GetDimensionValues",
              "ce:GetCostAndUsage",
              "ce:GetTags",
              "fsx:Describe*",
              "fsx:List*"
          ],
          "Resource": "*",
          "Effect": "Allow",
          "Sid": "cvoServicePolicy"
      },
      {
          "Action": [
              "ec2:StartInstances",
              "ec2:StopInstances",
              "ec2:DescribeInstances",
              "ec2:DescribeInstanceStatus",
              "ec2:RunInstances",
              "ec2:TerminateInstances",
              "ec2:DescribeInstanceAttribute",
              "ec2:DescribeImages",
              "ec2:CreateTags",
              "ec2:CreateVolume",
              "ec2:CreateSecurityGroup",
              "ec2:DescribeSubnets",
              "ec2:DescribeVpcs",
              "ec2:DescribeRegions",
              "cloudformation:CreateStack",
              "cloudformation:DeleteStack",
              "cloudformation:DescribeStacks",
              "kms:List*",
              "kms:Describe*",
              "ec2:describeVpcEndpoints",
              "kms:ListAliases",
              "athena:StartQueryExecution",
              "athena:GetQueryResults",
              "athena:GetQueryExecution",
              "glue:GetDatabase",
              "glue:GetTable",
              "glue:CreateTable",
              "glue:CreateDatabase",
              "glue:GetPartitions",
              "glue:BatchCreatePartition",
              "glue:BatchDeletePartition"
          ],
          "Resource": "*",
          "Effect": "Allow",
          "Sid": "backupPolicy"
      },
      {
          "Action": [
              "s3:GetBucketLocation",
              "s3:ListAllMyBuckets",
              "s3:ListBucket",
              "s3:CreateBucket",
              "s3:GetLifecycleConfiguration",
              "s3:PutLifecycleConfiguration",
              "s3:PutBucketTagging",
              "s3:ListBucketVersions",
              "s3:GetBucketAcl",
              "s3:PutBucketPublicAccessBlock",
              "s3:GetObject",
              "s3:PutEncryptionConfiguration",
              "s3:DeleteObject",
              "s3:DeleteObjectVersion",
              "s3:ListBucketMultipartUploads",
              "s3:PutObject",
              "s3:PutBucketAcl",
              "s3:AbortMultipartUpload",
              "s3:ListMultipartUploadParts",
              "s3:DeleteBucket",
              "s3:GetObjectVersionTagging",
              "s3:GetObjectVersionAcl",
              "s3:GetObjectRetention",
              "s3:GetObjectTagging",
              "s3:GetObjectVersion",
              "s3:PutObjectVersionTagging",
              "s3:PutObjectRetention",
              "s3:DeleteObjectTagging",
              "s3:DeleteObjectVersionTagging",
              "s3:GetBucketObjectLockConfiguration",
              "s3:GetBucketVersioning",
              "s3:PutBucketObjectLockConfiguration",
              "s3:PutBucketVersioning",
              "s3:BypassGovernanceRetention",
              "s3:PutBucketPolicy",
              "s3:PutBucketOwnershipControls"
          ],
          "Resource": [
              "arn:aws:s3:::netapp-backup-*"
          ],
          "Effect": "Allow",
          "Sid": "backupS3Policy"
      },
      {
          "Action": [
              "s3:CreateBucket",
              "s3:GetLifecycleConfiguration",
              "s3:PutLifecycleConfiguration",
              "s3:PutBucketTagging",
              "s3:ListBucketVersions",
              "s3:GetBucketPolicyStatus",
              "s3:GetBucketPublicAccessBlock",
              "s3:GetBucketAcl",
              "s3:GetBucketPolicy",
              "s3:PutBucketPublicAccessBlock",
              "s3:DeleteBucket"
          ],
          "Resource": [
              "arn:aws:s3:::fabric-pool*"
          ],
          "Effect": "Allow",
          "Sid": "fabricPoolS3Policy"
      },
      {
          "Action": [
              "ec2:DescribeRegions"
          ],
          "Resource": "*",
          "Effect": "Allow",
          "Sid": "fabricPoolPolicy"
      },
      {
          "Condition": {
              "StringLike": {
                  "ec2:ResourceTag/netapp-adc-manager": "*"
              }
          },
          "Action": [
              "ec2:StartInstances",
              "ec2:StopInstances",
              "ec2:TerminateInstances"
          ],
          "Resource": [
              "arn:aws:ec2:*:*:instance/*"
          ],
          "Effect": "Allow"
      },
      {
          "Condition": {
              "StringLike": {
                  "ec2:ResourceTag/WorkingEnvironment": "*"
              }
          },
          "Action": [
              "ec2:StartInstances",
              "ec2:TerminateInstances",
              "ec2:AttachVolume",
              "ec2:DetachVolume",
              "ec2:StopInstances",
              "ec2:DeleteVolume"
          ],
          "Resource": [
              "arn:aws:ec2:*:*:instance/*"
          ],
          "Effect": "Allow"
      },
      {
          "Action": [
              "ec2:AttachVolume",
              "ec2:DetachVolume"
          ],
          "Resource": [
              "arn:aws:ec2:*:*:volume/*"
          ],
          "Effect": "Allow"
      },
      {
          "Condition": {
              "StringLike": {
                  "ec2:ResourceTag/WorkingEnvironment": "*"
              }
          },
          "Action": [
              "ec2:DeleteVolume"
          ],
          "Resource": [
              "arn:aws:ec2:*:*:volume/*"
          ],
          "Effect": "Allow"
      }
  ]
}
- BlueXPConnectorInstanceBlueXP_Policy_II
{
  "Statement": [
      {
          "Action": [
              "ec2:DescribeRegions",
              "eks:ListClusters",
              "eks:DescribeCluster",
              "iam:GetInstanceProfile"
          ],
          "Resource": "*",
          "Effect": "Allow",
          "Sid": "K8sServicePolicy"
      },
      {
          "Action": [
              "cloudformation:DescribeStacks",
              "cloudwatch:GetMetricStatistics",
              "cloudformation:ListStacks"
          ],
          "Resource": "*",
          "Effect": "Allow",
          "Sid": "GFCservicePolicy"
      },
      {
          "Condition": {
              "StringLike": {
                  "ec2:ResourceTag/GFCInstance": "*"
              }
          },
          "Action": [
              "ec2:StartInstances",
              "ec2:TerminateInstances",
              "ec2:AttachVolume",
              "ec2:DetachVolume"
          ],
          "Resource": [
              "arn:aws:ec2:*:*:instance/*"
          ],
          "Effect": "Allow"
      },
      {
          "Action": [
              "ec2:CreateTags",
              "ec2:DeleteTags",
              "ec2:DescribeTags",
              "tag:getResources",
              "tag:getTagKeys",
              "tag:getTagValues",
              "tag:TagResources",
              "tag:UntagResources"
          ],
          "Resource": "*",
          "Effect": "Allow",
          "Sid": "tagServicePolicy"
      }
  ]
}

EC2インスタンスは以下のとおりです。インスタンスタイプはt3.xlargeですね。

28.EC2インスタンス

ボリュームは100GBのものが1つアタッチされていました。

29.EBSボリューム

ユーザーデータは以下のとおりです。

{
  "instanceName": "BlueXPConnectorInstance",
  "company": "Classmethod, Inc.",
  "userId": "auth0|<ユーザーID>",
  "email": "<Eメールアドレス>",
  "clientId": "<クライアントID>",
  "clientSecret": "<シークレット情報>",
  "environment": "production",
  "systemId": "<システムID>",
  "localAgent": "false",
  "proxySettings": {
    "proxyUrl": null,
    "proxyUserName": null,
    "proxyPassword": null
  },
  "tenancyAccountId": "account-<アカウントID>"
}

こちらのユーザーデータを読み込んで、BlueXP ConnectorからBlueXPに対して通信するのだと想像します。

セキュリティグループは以下のとおりです。何故か全てのTCPポートへのVPCのCIDRからのアクセスが許可されています。

29.作成されたセキュリティグループ

AWS CLIからもEC2インスタンスの情報を確認しておきます。

$ aws ec2 describe-instances --instance-ids i-013781407dd88476f
{
    "Reservations": [
        {
            "Groups": [],
            "Instances": [
                {
                    "AmiLaunchIndex": 0,
                    "ImageId": "ami-0c587abeb15014ce8",
                    "InstanceId": "i-013781407dd88476f",
                    "InstanceType": "t3.xlarge",
                    "KeyName": "non-97",
                    "LaunchTime": "2023-09-11T02:08:51+00:00",
                    "Monitoring": {
                        "State": "disabled"
                    },
                    "Placement": {
                        "AvailabilityZone": "us-east-1a",
                        "GroupName": "",
                        "Tenancy": "default"
                    },
                    "PrivateDnsName": "ip-10-0-0-159.ec2.internal",
                    "PrivateIpAddress": "10.0.0.159",
                    "ProductCodes": [],
                    "PublicDnsName": "ec2-34-201-44-43.compute-1.amazonaws.com",
                    "PublicIpAddress": "34.201.44.43",
                    "State": {
                        "Code": 16,
                        "Name": "running"
                    },
                    "StateTransitionReason": "",
                    "SubnetId": "subnet-07ee12f18f152d4a4",
                    "VpcId": "vpc-043c0858ea33e8ec2",
                    "Architecture": "x86_64",
                    "BlockDeviceMappings": [
                        {
                            "DeviceName": "/dev/sda1",
                            "Ebs": {
                                "AttachTime": "2023-09-11T02:08:51+00:00",
                                "DeleteOnTermination": false,
                                "Status": "attached",
                                "VolumeId": "vol-068a9f5dbcce20b29"
                            }
                        }
                    ],
                    "ClientToken": "BlueX-OCCMI-RBUY292O7FM5",
                    "EbsOptimized": false,
                    "EnaSupport": true,
                    "Hypervisor": "xen",
                    "IamInstanceProfile": {
                        "Arn": "arn:aws:iam::<AWSアカウントID>:instance-profile/BlueXPConnectorInstanceOCCM1694397973564-OCCMInstanceProfile-f66tr4bHhJVx",
                        "Id": "AIPASTFXPUVS5G3GFBVN2"
                    },
                    "NetworkInterfaces": [
                        {
                            "Association": {
                                "IpOwnerId": "amazon",
                                "PublicDnsName": "ec2-34-201-44-43.compute-1.amazonaws.com",
                                "PublicIp": "34.201.44.43"
                            },
                            "Attachment": {
                                "AttachTime": "2023-09-11T02:08:51+00:00",
                                "AttachmentId": "eni-attach-077683278327d8073",
                                "DeleteOnTermination": true,
                                "DeviceIndex": 0,
                                "Status": "attached",
                                "NetworkCardIndex": 0
                            },
                            "Description": "",
                            "Groups": [
                                {
                                    "GroupName": "BlueXPConnectorInstanceOCCM1694397973564-OCCMSecurityGroup-16YSVPT6ZQR42",
                                    "GroupId": "sg-000734f30492d0ff9"
                                }
                            ],
                            "Ipv6Addresses": [],
                            "MacAddress": "0a:18:e2:ab:2e:57",
                            "NetworkInterfaceId": "eni-0520082082288d3cf",
                            "OwnerId": "<AWSアカウントID>",
                            "PrivateDnsName": "ip-10-0-0-159.ec2.internal",
                            "PrivateIpAddress": "10.0.0.159",
                            "PrivateIpAddresses": [
                                {
                                    "Association": {
                                        "IpOwnerId": "amazon",
                                        "PublicDnsName": "ec2-34-201-44-43.compute-1.amazonaws.com",
                                        "PublicIp": "34.201.44.43"
                                    },
                                    "Primary": true,
                                    "PrivateDnsName": "ip-10-0-0-159.ec2.internal",
                                    "PrivateIpAddress": "10.0.0.159"
                                }
                            ],
                            "SourceDestCheck": true,
                            "Status": "in-use",
                            "SubnetId": "subnet-07ee12f18f152d4a4",
                            "VpcId": "vpc-043c0858ea33e8ec2",
                            "InterfaceType": "interface"
                        }
                    ],
                    "RootDeviceName": "/dev/sda1",
                    "RootDeviceType": "ebs",
                    "SecurityGroups": [
                        {
                            "GroupName": "BlueXPConnectorInstanceOCCM1694397973564-OCCMSecurityGroup-16YSVPT6ZQR42",
                            "GroupId": "sg-000734f30492d0ff9"
                        }
                    ],
                    "SourceDestCheck": true,
                    "Tags": [
                        {
                            "Key": "aws:cloudformation:stack-id",
                            "Value": "arn:aws:cloudformation:us-east-1:<AWSアカウントID>:stack/BlueXPConnectorInstanceOCCM1694397973564/c95fc160-5047-11ee-ac27-12fb766967b5"
                        },
                        {
                            "Key": "OCCMInstance",
                            "Value": "BlueXPConnectorInstance"
                        },
                        {
                            "Key": "aws:cloudformation:stack-name",
                            "Value": "BlueXPConnectorInstanceOCCM1694397973564"
                        },
                        {
                            "Key": "aws:cloudformation:logical-id",
                            "Value": "OCCMInstance"
                        },
                        {
                            "Key": "Name",
                            "Value": "BlueXPConnectorInstance"
                        }
                    ],
                    "VirtualizationType": "hvm",
                    "CpuOptions": {
                        "CoreCount": 2,
                        "ThreadsPerCore": 2
                    },
                    "CapacityReservationSpecification": {
                        "CapacityReservationPreference": "open"
                    },
                    "HibernationOptions": {
                        "Configured": false
                    },
                    "MetadataOptions": {
                        "State": "applied",
                        "HttpTokens": "optional",
                        "HttpPutResponseHopLimit": 1,
                        "HttpEndpoint": "enabled",
                        "HttpProtocolIpv6": "disabled",
                        "InstanceMetadataTags": "disabled"
                    },
                    "EnclaveOptions": {
                        "Enabled": false
                    },
                    "PlatformDetails": "Linux/UNIX",
                    "UsageOperation": "RunInstances",
                    "UsageOperationUpdateTime": "2023-09-11T02:08:51+00:00",
                    "PrivateDnsNameOptions": {
                        "HostnameType": "ip-name",
                        "EnableResourceNameDnsARecord": false,
                        "EnableResourceNameDnsAAAARecord": false
                    },
                    "MaintenanceOptions": {
                        "AutoRecovery": "default"
                    },
                    "CurrentInstanceBootMode": "legacy-bios"
                }
            ],
            "OwnerId": "<AWSアカウントID>",
            "RequesterId": "043234062703",
            "ReservationId": "r-05f90c308bb77c253"
        }
    ]
}

BlueXP ConnectorのEC2インスタンスにSSHしてみましょう。

>  ssh -i "non-97.pem" ubuntu@ec2-34-201-44-43.compute-1.amazonaws.com
Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-1028-aws x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Mon Sep 11 02:19:38 UTC 2023

  System load:  0.7080078125       Users logged in:                  0
  Usage of /:   12.1% of 96.73GB   IPv4 address for br-b2ecb88609c7: 10.4.20.1
  Memory usage: 39%                IPv4 address for docker0:         172.17.0.1
  Swap usage:   0%                 IPv4 address for ens5:            10.0.0.159
  Processes:    228


Expanded Security Maintenance for Applications is not enabled.

88 updates can be applied immediately.
45 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status


The list of available updates is more than a week old.
To check for new updates run: sudo apt update

Last login: Wed May 10 12:20:25 2023 from <IPアドレス>

~$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

~$ ps auxf
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           2  0.0  0.0      0     0 ?        S    02:08   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [rcu_par_gp]
root           5  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [slub_flushwq]
root           6  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [netns]
root           8  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [kworker/0:0H-events_highpri]
root           9  0.2  0.0      0     0 ?        I    02:08   0:01  \_ [kworker/u8:0-ext4-rsv-conversion]
root          10  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [mm_percpu_wq]
root          11  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [rcu_tasks_rude_]
root          12  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [rcu_tasks_trace]
root          13  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [ksoftirqd/0]
root          14  0.0  0.0      0     0 ?        I    02:08   0:00  \_ [rcu_sched]
root          15  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [migration/0]
root          16  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [idle_inject/0]
root          18  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [cpuhp/0]
root          19  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [cpuhp/1]
root          20  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [idle_inject/1]
root          21  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [migration/1]
root          22  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [ksoftirqd/1]
root          24  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [kworker/1:0H-kblockd]
root          25  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [cpuhp/2]
root          26  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [idle_inject/2]
root          27  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [migration/2]
root          28  0.1  0.0      0     0 ?        S    02:08   0:00  \_ [ksoftirqd/2]
root          30  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [kworker/2:0H-events_highpri]
root          31  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [cpuhp/3]
root          32  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [idle_inject/3]
root          33  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [migration/3]
root          34  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [ksoftirqd/3]
root          35  0.0  0.0      0     0 ?        I    02:08   0:00  \_ [kworker/3:0-events]
root          36  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [kworker/3:0H-events_highpri]
root          37  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [kdevtmpfs]
root          38  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [inet_frag_wq]
root          39  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [kauditd]
root          40  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [khungtaskd]
root          41  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [oom_reaper]
root          42  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [writeback]
root          43  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [kcompactd0]
root          44  0.0  0.0      0     0 ?        SN   02:08   0:00  \_ [ksmd]
root          45  0.0  0.0      0     0 ?        SN   02:08   0:00  \_ [khugepaged]
root          50  0.0  0.0      0     0 ?        I    02:08   0:00  \_ [kworker/1:1-events]
root          92  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [kintegrityd]
root          93  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [kblockd]
root          94  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [blkcg_punt_bio]
root          95  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [tpm_dev_wq]
root          96  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [ata_sff]
root          97  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [md]
root          98  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [edac-poller]
root          99  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [devfreq_wq]
root         100  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [watchdogd]
root         101  0.0  0.0      0     0 ?        I    02:08   0:00  \_ [kworker/2:1-events]
root         103  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [kworker/0:1H-kblockd]
root         105  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [kswapd0]
root         106  0.0  0.0      0     0 ?        S    02:08   0:00  \_ [ecryptfs-kthrea]
root         107  0.0  0.0      0     0 ?        I    02:08   0:00  \_ [kworker/3:1-events]
root         109  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [kthrotld]
root         110  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [acpi_thermal_pm]
root         111  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [nvme-wq]
root         112  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [nvme-reset-wq]
root         113  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [nvme-delete-wq]
root         114  0.1  0.0      0     0 ?        I    02:08   0:01  \_ [kworker/u8:2-flush-259:0]
root         115  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [vfio-irqfd-clea]
root         116  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [mld]
root         117  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [kworker/2:1H-kblockd]
root         118  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [ipv6_addrconf]
root         128  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [kstrp]
root         131  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [zswap-shrink]
root         132  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [kworker/u9:0]
root         137  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [charger_manager]
root         138  0.1  0.0      0     0 ?        S    02:08   0:01  \_ [jbd2/nvme0n1p1-]
root         139  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [ext4-rsv-conver]
root         141  0.0  0.0      0     0 ?        I    02:08   0:00  \_ [kworker/2:2-cgroup_destroy]
root         165  0.0  0.0      0     0 ?        I<   02:08   0:00  \_ [kworker/1:1H-kblockd]
root         199  0.0  0.0      0     0 ?        I    02:09   0:00  \_ [kworker/0:2-events]
root         211  0.0  0.0      0     0 ?        I<   02:09   0:00  \_ [kworker/3:1H-kblockd]
root         222  0.0  0.0      0     0 ?        I<   02:09   0:00  \_ [kaluad]
root         223  0.0  0.0      0     0 ?        I<   02:09   0:00  \_ [kmpath_rdacd]
root         224  0.0  0.0      0     0 ?        I<   02:09   0:00  \_ [kmpathd]
root         225  0.0  0.0      0     0 ?        I<   02:09   0:00  \_ [kmpath_handlerd]
root         263  0.0  0.0      0     0 ?        I<   02:09   0:00  \_ [cryptd]
root         279  0.0  0.0      0     0 ?        I<   02:09   0:00  \_ [ena]
root         331  0.0  0.0      0     0 ?        I    02:09   0:00  \_ [kworker/u8:7-flush-259:0]
root         334  0.4  0.0      0     0 ?        I    02:09   0:02  \_ [kworker/u8:9-events_unbound]
root         335  0.2  0.0      0     0 ?        I    02:09   0:02  \_ [kworker/u8:10-flush-259:0]
root         572  0.0  0.0      0     0 ?        I    02:09   0:00  \_ [kworker/1:4-events]
root        1038  0.0  0.0      0     0 ?        I    02:09   0:00  \_ [kworker/3:3-cgroup_destroy]
root        1422  0.0  0.0      0     0 ?        I    02:09   0:00  \_ [kworker/0:3-events]
root        6643  0.1  0.0      0     0 ?        I    02:14   0:00  \_ [kworker/u8:5-flush-259:0]
root       10517  0.0  0.0      0     0 ?        I    02:15   0:00  \_ [kworker/u8:8-flush-259:0]
root       10975  0.0  0.0      0     0 ?        I    02:18   0:00  \_ [kworker/1:0-events]
root           1  0.6  0.0 167936 13484 ?        Ss   02:08   0:04 /sbin/init
root         181  0.0  0.0  56140 14976 ?        S<s  02:09   0:00 /lib/systemd/systemd-journald
root         226  0.0  0.1 289308 27096 ?        SLsl 02:09   0:00 /sbin/multipathd -d -s
root         228  0.0  0.0  23044  6572 ?        Ss   02:09   0:00 /lib/systemd/systemd-udevd
systemd+     446  0.0  0.0  16380  8476 ?        Ss   02:09   0:00 /lib/systemd/systemd-networkd
systemd+     448  0.2  0.0  25400 13496 ?        Ss   02:09   0:01 /lib/systemd/systemd-resolved
root         538  0.0  0.0   2812  1192 ?        Ss   02:09   0:00 /usr/sbin/acpid
root         542  0.0  0.0   7284  2836 ?        Ss   02:09   0:00 /usr/sbin/cron -f -P
message+     543  0.0  0.0   9360  5244 ?        Ss   02:09   0:00 @dbus-daemon --system --address=systemd: --nofork --n
root         551  0.0  0.0  82764  3976 ?        Ssl  02:09   0:00 /usr/sbin/irqbalance --foreground
root         552  0.0  0.1  33128 19460 ?        Ss   02:09   0:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-s
syslog       554  0.0  0.0 222400  5736 ?        Ssl  02:09   0:00 /usr/sbin/rsyslogd -n -iNONE
root         557  0.5  0.1 1540568 30584 ?       Ssl  02:09   0:03 /usr/lib/snapd/snapd
root         558  0.0  0.0  15512  7448 ?        Ss   02:09   0:00 /lib/systemd/systemd-logind
root         560  0.1  0.3 1505792 54480 ?       Ssl  02:09   0:01 /usr/bin/containerd
root         585  0.0  0.0   6216  1088 ttyS0    Ss+  02:09   0:00 /sbin/agetty -o -p -- \u --keep-baud 115200,57600,384
root         590  0.0  0.0   6172  1080 tty1     Ss+  02:09   0:00 /sbin/agetty -o -p -- \u --noclear tty1 linux
_chrony      595  0.0  0.0  18888  3540 ?        S    02:09   0:00 /usr/sbin/chronyd -F 1
_chrony      606  0.0  0.0  10560   528 ?        S    02:09   0:00  \_ /usr/sbin/chronyd -F 1
root         635  0.0  0.1 110072 21416 ?        Ssl  02:09   0:00 /usr/bin/python3 /usr/share/unattended-upgrades/unatt
root         654  0.0  0.0 235452  8040 ?        Ssl  02:09   0:00 /usr/libexec/polkitd --no-debug
root         781  0.0  0.0  15424  9108 ?        Ss   02:09   0:00 sshd: /usr/sbin/sshd -D -o AuthorizedKeysCommand /usr
root       11040  0.0  0.0  16916 10672 ?        Ss   02:19   0:00  \_ sshd: ubuntu [priv]
ubuntu     11108  0.0  0.0  17216  7968 ?        S    02:19   0:00      \_ sshd: ubuntu@pts/0
ubuntu     11109  0.0  0.0   9228  5472 pts/0    Ss   02:19   0:00          \_ -bash
ubuntu     11186  0.0  0.0  10800  3668 pts/0    R+   02:20   0:00              \_ ps auxf
root         855 21.7  0.6 3293588 107556 ?      Ssl  02:09   2:33 /usr/bin/dockerd -H fd:// --containerd=/run/container
root        2709  0.1  0.0 1304980 4868 ?        Sl   02:10   0:01  \_ /usr/bin/docker-proxy -proto tcp -host-ip 127.0.0
root        2843  0.0  0.0 1230992 3356 ?        Sl   02:10   0:00  \_ /usr/bin/docker-proxy -proto tcp -host-ip 127.0.0
root        2983  0.0  0.0 1083016 3224 ?        Sl   02:10   0:00  \_ /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0
root        2993  0.0  0.0 1156748 3476 ?        Sl   02:10   0:00  \_ /usr/bin/docker-proxy -proto tcp -host-ip :: -hos
root        3048  0.0  0.0 1230992 3368 ?        Sl   02:10   0:00  \_ /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0
root        3057  0.0  0.0 1156748 3320 ?        Sl   02:10   0:00  \_ /usr/bin/docker-proxy -proto tcp -host-ip :: -hos
root        7232  0.0  0.0 1157004 3404 ?        Sl   02:14   0:00  \_ /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0
root        7246  0.0  0.0 1157004 3336 ?        Sl   02:14   0:00  \_ /usr/bin/docker-proxy -proto tcp -host-ip :: -hos
root        8026  0.0  0.0 1156748 3236 ?        Sl   02:14   0:00  \_ /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0
root        8058  0.0  0.0 1083272 3440 ?        Sl   02:14   0:00  \_ /usr/bin/docker-proxy -proto tcp -host-ip :: -hos
root        8199  0.0  0.0 1156748 3296 ?        Sl   02:14   0:00  \_ /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0
root        8208  0.0  0.0 1230736 3284 ?        Sl   02:14   0:00  \_ /usr/bin/docker-proxy -proto tcp -host-ip :: -hos
root       10531  0.0  0.0 1378456 3244 ?        Sl   02:15   0:00  \_ /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0
root       10541  0.0  0.0 1230736 3404 ?        Sl   02:15   0:00  \_ /usr/bin/docker-proxy -proto tcp -host-ip :: -hos
root        1567  3.6  0.7 916616 125936 ?       Ssl  02:09   0:24 /opt/application/netapp/service-manager-2/sm2
root        2626  0.0  0.0 720760  9408 ?        Sl   02:10   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        2660  4.1  1.4 10036580 241456 ?     Ssl  02:10   0:25  \_ java -XX:+UnlockExperimentalVMOptions -XX:+UseCGr
root        2693  0.0  0.0 720504  9140 ?        Sl   02:10   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
lxd         2726  0.5  1.7 2632136 277952 ?      Ssl  02:10   0:03  \_ mysqld
root        2762  0.0  0.0 720760  8948 ?        Sl   02:10   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        2851 21.8  9.7 4642952 1581520 ?     Ssl  02:10   2:15  \_ java -XX:+UnlockExperimentalVMOptions -XX:MaxRAMF
root        2785  0.0  0.0 720760  9356 ?        Sl   02:10   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        2869  5.6  1.5 10027236 249652 ?     Ssl  02:10   0:35  \_ java -XX:+UnlockExperimentalVMOptions -XX:+UseCGr
root        2902  0.0  0.0 720504 10468 ?        Sl   02:10   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        2937  0.0  0.0   7632  5132 ?        Ss   02:10   0:00  \_ nginx: master process nginx -g daemon off;
systemd+    3587  0.0  0.0   7872  1720 ?        S    02:10   0:00      \_ nginx: worker process
root        2974  0.0  0.0 720504  9508 ?        Sl   02:10   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        3029  3.7  1.4 9918292 239292 ?      Ssl  02:10   0:23  \_ java -XX:+UnlockExperimentalVMOptions -XX:+UseCGr
root        3120  0.0  0.0 720504  9112 ?        Sl   02:10   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        3157  0.2  0.5 844648 96660 ?        Ssl  02:10   0:01  \_ traefik traefik --configFile=/conf/traefik.yml
root        3370  0.0  0.0   1608     4 ?        S    02:10   0:00      \_ inotifyd /conf/on_cert_write.sh /conf/certs/
root        7128  0.0  0.0 720504  9500 ?        Sl   02:14   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        7202  0.0  0.0   3984  2972 ?        Ss   02:14   0:00  \_ /bin/bash /opt/netapp/cbs/catalog/scripts/entrypo
root        8378  2.0  1.1 11820084 184328 ?     Sl   02:14   0:07      \_ node dist/app.js
root        7190  0.0  0.0 720504  9080 ?        Sl   02:14   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        7254  0.0  0.3 769608 48632 ?        Ssl  02:14   0:00  \_ ./cloudmanager_scs_cloud
root        7228  0.0  0.0 720760 10368 ?        Sl   02:14   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        7287  3.0  1.0 9822856 164468 ?      Ssl  02:14   0:11  \_ java -XX:+UnlockExperimentalVMOptions -XX:+UseCGr
root        7340  0.0  0.0 720504  9756 ?        Sl   02:14   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        7690  1.3  0.5 32710564 81760 ?      Ssl  02:14   0:05  \_ node --loader @esbuild-kit/esm-loader index.js
root        7364  0.0  0.0 720760  9476 ?        Sl   02:14   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        7656  0.0  0.1 733692 25308 ?        Ssl  02:14   0:00  \_ ./cloudmanager_snapcenter
root        7443  0.0  0.0 720504  8972 ?        Sl   02:14   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        7648  0.0  0.0   1604  1124 ?        Ss   02:14   0:00  \_ /bin/sh /opt/netapp/k8s/scripts/entrypoint.sh
root        8830  0.2  0.3 703504 60312 ?        Sl   02:14   0:01      \_ npm run start
root       10209  2.4  0.6 32738476 112704 ?     Sl   02:14   0:08          \_ node --experimental-loader @esbuild-kit/e
root        7484  0.0  0.0 720504  9344 ?        Sl   02:14   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        7683  1.3  0.5 20106312 85796 ?      Ssl  02:14   0:04  \_ node --experimental-loader ./loader.js index.js
root        7517  0.0  0.0 720504  8772 ?        Sl   02:14   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        7657 15.2  0.6 32731340 104020 ?     Ssl  02:14   0:57  \_ node --loader @esbuild-kit/esm-loader app.js
root        7557  0.0  0.0 720248  8984 ?        Sl   02:14   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        7713  0.1  0.4 326808 65204 ?        Ssl  02:14   0:00  \_ node /opt/yarn-v1.22.19/bin/yarn.js start
root        9720  0.1  0.3 278196 54844 ?        Sl   02:14   0:00      \_ /usr/local/bin/node src/index.js
root        7615  0.0  0.0 720504  9680 ?        Sl   02:14   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        7675  0.0  0.0   1604  1160 ?        Ss   02:14   0:00  \_ /bin/sh /opt/netapp/cloudtiering/agent/scripts/en
root        8634  0.4  0.3 705132 63712 ?        Sl   02:14   0:01      \_ npm run start
root       10181  3.9  1.1 32810120 184768 ?     Sl   02:14   0:14          \_ node --experimental-loader @esbuild-kit/e
root        7663  0.2  0.1 1463860 19096 ?       Ssl  02:14   0:00 /snap/amazon-ssm-agent/7528/amazon-ssm-agent
root        7830  0.0  0.0 720504  9608 ?        Sl   02:14   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        7930  0.1  0.4 326528 65352 ?        Ssl  02:14   0:00  \_ node /opt/yarn-v1.22.19/bin/yarn.js start
root       10102  0.0  0.3 276468 53368 ?        Sl   02:14   0:00      \_ /usr/local/bin/node src/index.js
root        7841  0.0  0.0 720760  9120 ?        Sl   02:14   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        7988  0.0  0.0   1604  1020 ?        Ss   02:14   0:00  \_ /bin/sh ./startup.sh
root       10000  2.6  0.7 43238740 126600 ?     Sl   02:14   0:09      \_ node --loader @esbuild-kit/esm-loader index.j
root        7968  0.0  0.0 720504 10144 ?        Sl   02:14   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        8101  0.0  0.0   1624   944 ?        Ss   02:14   0:00  \_ /bin/sh /opt/netapp/cbs/server/scripts/entrypoint
root       10017 16.8  1.0 21772780 168748 ?     Sl   02:14   1:02      \_ node --experimental-specifier-resolution=node
root        7985  0.0  0.0 720504 10468 ?        Sl   02:14   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        8162  0.4  0.4 335584 80320 ?        Ssl  02:14   0:01  \_ node dist/apps/cloudmanager_audit/main
root        8012  0.0  0.0 720504  8844 ?        Sl   02:14   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        8233  0.0  0.0   1616  1000 ?        Ss   02:14   0:00  \_ /bin/sh /usr/src/app/entrypoint.sh
root       10032  0.7  0.4 10801032 68120 ?      Sl   02:14   0:02      \_ node index.js
root        8077  0.0  0.0 720760  9096 ?        Sl   02:14   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
ubuntu      8252  0.1  0.1  30184 27136 ?        Ss   02:14   0:00  \_ /usr/bin/python3 /usr/bin/supervisord -c /etc/sup
ubuntu      9031  0.0  0.0   1672     4 ?        S    02:14   0:00      \_ cat
ubuntu     10267  0.1  0.1  28144 24780 ?        S    02:14   0:00      \_ /usr/local/bin/python /usr/local/bin/gunicorn
ubuntu     10349  1.4  0.7 138724 128392 ?       Sl   02:14   0:05      |   \_ /usr/local/bin/python /usr/local/bin/guni
ubuntu     10352  1.3  0.7 138692 128096 ?       Sl   02:14   0:05      |   \_ /usr/local/bin/python /usr/local/bin/guni
ubuntu     10353  1.1  0.7 137540 128108 ?       Sl   02:14   0:04      |   \_ /usr/local/bin/python /usr/local/bin/guni
ubuntu     10268  0.0  0.0   7480  5936 ?        S    02:14   0:00      \_ nginx: master process /usr/sbin/nginx -g daem
ubuntu     10281  0.0  0.0   7936  2896 ?        S    02:14   0:00      |   \_ nginx: worker process
ubuntu     10282  0.0  0.0   7936  2892 ?        S    02:14   0:00      |   \_ nginx: worker process
ubuntu     10285  0.0  0.0   7936  2892 ?        S    02:14   0:00      |   \_ nginx: worker process
ubuntu     10286  0.0  0.0   7936  2892 ?        S    02:14   0:00      |   \_ nginx: worker process
ubuntu     10269  0.1  0.0  29004  5760 ?        Sl   02:14   0:00      \_ /usr/local/bin/redis-server *:6379
ubuntu     10271  0.7  0.5 103512 96588 ?        S    02:14   0:02      \_ python3 app/scheduler.py
ubuntu     10274  0.7  0.5 101200 93684 ?        S    02:14   0:02      \_ /usr/local/bin/python /usr/local/bin/celery -
ubuntu     10705  0.0  0.5 102044 84768 ?        S    02:15   0:00          \_ /usr/local/bin/python /usr/local/bin/cele
ubuntu     10710  0.0  0.5 102048 84760 ?        S    02:15   0:00          \_ /usr/local/bin/python /usr/local/bin/cele
root        8286  0.0  0.0 720248  8992 ?        Sl   02:14   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root        8381  3.8  1.5 9976496 256896 ?      Ssl  02:14   0:14  \_ java -XX:+UnlockExperimentalVMOptions -XX:+UseCGr
root       10567  0.0  0.0 720760 10244 ?        Sl   02:15   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id
root       10589  0.0  0.0   4244  3500 ?        Ss   02:15   0:00  \_ /bin/bash /usr/local/bin/entrypoint.sh -f /etc/sq
root       10687  0.0  0.0   2668   924 ?        S    02:15   0:00      \_ tail -F /var/log/squid/access.log
root       10688  0.0  0.0   2668   928 ?        S    02:15   0:00      \_ tail -F /var/log/squid/error.log
root       10689  0.0  0.0   2668   912 ?        S    02:15   0:00      \_ tail -F /var/log/squid/store.log
root       10690  0.0  0.0   2668  1000 ?        S    02:15   0:00      \_ tail -F /var/log/squid/cache.log
proxy      10692  0.0  1.0 659320 171760 ?       S    02:15   0:00      \_ /usr/sbin/squid -f /etc/squid/squid.conf -NYC
proxy      10694  0.0  0.0   5912  1808 ?        Ss   02:15   0:00          \_ (logfile-daemon) /var/log/squid/access.lo
proxy      10695  0.0  0.0   6020  1972 ?        Ss   02:15   0:00          \_ (pinger)
ubuntu     11045  0.1  0.0  17332  9836 ?        Ss   02:19   0:00 /lib/systemd/systemd --user
ubuntu     11046  0.0  0.0 170848  5416 ?        S    02:19   0:00  \_ (sd-pam)

~$ sudo ss -antp | grep LISTEN
LISTEN    0      4096       127.0.0.1:3001       0.0.0.0:*     users:(("docker-proxy",pid=2843,fd=4))
LISTEN    0      4096         0.0.0.0:443        0.0.0.0:*     users:(("docker-proxy",pid=2983,fd=4))
LISTEN    0      4096         0.0.0.0:9060       0.0.0.0:*     users:(("docker-proxy",pid=8199,fd=4))
LISTEN    0      4096         0.0.0.0:9061       0.0.0.0:*     users:(("docker-proxy",pid=8026,fd=4))
LISTEN    0      4096       127.0.0.1:8777       0.0.0.0:*     users:(("docker-proxy",pid=2709,fd=4))
LISTEN    0      4096         0.0.0.0:80         0.0.0.0:*     users:(("docker-proxy",pid=3048,fd=4))
LISTEN    0      4096         0.0.0.0:8085       0.0.0.0:*     users:(("docker-proxy",pid=7232,fd=4))
LISTEN    0      4096   127.0.0.53%lo:53         0.0.0.0:*     users:(("systemd-resolve",pid=448,fd=14))
LISTEN    0      128          0.0.0.0:22         0.0.0.0:*     users:(("sshd",pid=781,fd=3))
LISTEN    0      4096         0.0.0.0:3128       0.0.0.0:*     users:(("docker-proxy",pid=10531,fd=4))
LISTEN    0      511       172.17.0.1:8888       0.0.0.0:*     users:(("sm2",pid=1567,fd=19))
LISTEN    0      4096            [::]:443           [::]:*     users:(("docker-proxy",pid=2993,fd=4))
LISTEN    0      4096            [::]:9060          [::]:*     users:(("docker-proxy",pid=8208,fd=4))
LISTEN    0      4096            [::]:9061          [::]:*     users:(("docker-proxy",pid=8058,fd=4))
LISTEN    0      4096            [::]:80            [::]:*     users:(("docker-proxy",pid=3057,fd=4))
LISTEN    0      4096            [::]:8085          [::]:*     users:(("docker-proxy",pid=7246,fd=4))
LISTEN    0      128             [::]:22            [::]:*     users:(("sshd",pid=781,fd=4))
LISTEN    0      4096            [::]:3128          [::]:*     users:(("docker-proxy",pid=10541,fd=4))

正体はUbuntu 22.04のようです。内部でコンテナが大量に動いていますね。

BleuXPのコンソールに戻ってCredentialsを確認すると、BleuXP ConnectorのEC2インスタンスのインスタンスプロファイルが登録されていますね。

31.AWS Instance Profile

こちらのインスタンスプロファイルにはS3の権限が付与されているので、S3バケットの個数がCanvasに表示されていました。

32.Canvas

FSxNの作成 (リトライ)

FSxNの作成をリトライしてみます。

BlueXP RoleをCredentialに指定してNextをクリックします。

33.FSx for ONTAP Authentication

ファイルシステム名やメンテナンスウィンドウ、fsxadminの認証情報などを入力してNextをクリックします。

34.Details and Credentials

ここでFailed getCredentialsById, id:3780e162-fc85-4b05-b775-98507c75fc22 {"statusCode":400,"message":"assume role for arn:aws:iam:::role/BlueXPRole failed . err: ValidationError: 1 validation error detected: Value 'BlueXP Role' at 'roleSessionName' failed to satisfy constraint: Member must satisfy regular expression pattern: [\\w+=,.@-]*"}とエラーになりました。

35.Failed to get aws VPCs

BlueXP RoleとCredential名がそのままセッション名になるようですね。スペースなどセッション名に含んではならない文字はCredential名に含めないようにしましょう。

BlueXPRoleに名前を変更して再チャレンジすると、エラーなく次の画面に遷移できました。

リージョンやVPC、サブネット、Security Groupを選択してNextをクリックします。

36.Region and VPC

Multi-AZデプロイだと2つのサブネットの指定ができます。

43.Multi Availability Zone

Floating IPアドレスの設定も可能です。

44.Floating IP

また、Floating IPアドレスへのルーティングを行うルートテーブルの選択も行えます。

45.Route Tables

Single-AZデプロイのフローに戻ります。

暗号化で使用するキーを選択します。今回はデフォルトキーでNextをクリックします。

37.Data Encryption

プロビジョニングするSSDとIOPS、スループットキャパシティの設定をしてNextをクリックします。

38.Storage Configuration

最終確認です。内容確認してAddをクリックします。

39.Add FSx for ONTAP-Review

するとFSxNが作成されます。

Canvasから作成したFSxNを選択してEnter Working Environmentをクリックすると25分ほどかかると記載ありました。

41.Initializing

AWSマネジメントコンソールからも作成状況を確認します。

42.マネジメントコンソールから作成中のFSxNの確認

40.FSxN作成中

しばらく待つとFSxNの作成が完了しました。

46.作成したFSxNの確認

ちなみにBlueXP ConnectorのEC2インスタンスがない状態だと、以下のようにReplication requires a BlueXP connectorなどと各種設定ができないようになっています。

85.BlueXP Connectorがない状態で作成したFSxNの確認

作成したFSxNの確認

Enter Working Environmentをクリックして、作成したFSxNの詳細を確認をします。

すると、There is no connectivityと表示されました。

47.There is no connectivity

これはBlueXP ConnectorのEC2インスタンスからFSxNへのHTTPS通信が許可されていないためです。FSxNのSecurity Groupのインバウンドルールで許可してあげましょう。

設定後リフレッシュすると、ストレージやSVMの情報が表示されました。

48.fsxn_non_97 OverView

なお、BlueXP Connectorがそもそも存在しないと、A BlueXP connector is required to manage your FSx for ONTAP instanceと表示されAutomatic capacity managementWeekly maintenance windowしか設定変更できないようでした。BlueXP Connectorはほとんど必須なようなものですね。

86.A BlueXP connector is required to manage your FSx for ONTAP instance

ボリュームの作成

試しにボリュームを作ってみましょう。

VolumeタブからAdd Volumeをクリックします。

49.Add Volume

ボリュームの名前やサイズ、SVM、SnapMirror Policyなどを選択してNextをクリックします。

50.Volume details, protection & tags

ボリュームのプロトコルやアクセスコントロールの設定をしてNextをクリックします。

51.Volumes Protocol

Storage EfficiencyとTiering  Policyを設定してNextをクリックします。

52.Usage Profile & Tiering Policy

設定内容を確認してAddをクリックします。

53.Add volume in fsxn_non_97-Review

すると、ボリュームが作成されました。いい感じです。

54.vol1

SVMの確認もついでにします。

55.Storage VMs

56.View SVM details- svm_fsxn_non_97

AWSマネジメントコンソールで確認できる情報とほぼ同じですね。

一通り情報を見た後、Timelineを確認するとボリューム作成などのイベントが記録されていました。

61.Timeline

既存のFSxNの検索

BlueXPで作成したFSxN以外もBlueXP上で管理できるようにすることもできます。

CanvasのAdd Working EnvironmentからAmazon FSx for ONTAPのDiscover Existingをクリックします。

57.Discover Existing

Credentialを選択してNextをクリックします。

58.Add an Existing FSx for ONTAP

BlueXPに追加するFSxNを選択してAddをクリックします。

59.Select FSx for ONTAP

Canvasに選択したしたFSxNが追加されました。

60.追加したFSxNの確認

SnapMirrorの設定

SnapMirrorの設定をしてみます。

SnapMirrorのソースとなるFSxNをターゲットのFSxNにドラッグ&ドロップしてReplicationをクリックします。

62.Replication

追加したFSxNのfsxadminの認証情報を渡してあげてNextをクリックします。

63.One last step and you are ready to start

ソースとなるボリュームを選択してNextをクリックします。

64.Select the volume to replicate

ターゲットボリュームのTiering Policyを選択してNextをクリックします。

65.Select Tiering Option

ターゲットボリュームの名前とSVMを設定してNextをクリックします。

66.Target Volume Details

SnapMirrorのの転送帯域を指定してNextをクリックします。

67.Select Max Transfer Rate

SnapMirror Policyを選択してNextをクリックします。詳細な説明があるので好きです。

68.Select Replication Policy

SnapMirrorの間隔を指定してNextをクリックします。

69.Select a Replication Schedule

設定内容を確認してReplicationをクリックします。

70.Replication Setup-Review

SnapMirrorがうまく動作しない場合は、SnapMirrorで使用する通信がSecurity Groupで許可されていない可能性があります。TCP/11104とTCP/11105を許可してあげます。

71.SnapMirror用のポートを許可

正常に設定ができると、Canvas上にReplicationのアイコンが表示されます。

72.Replication

SnapMirrorの情報を確認します。

無事レプリケーションできていそうですね。

73.Volume Relationship (1)

詳細を確認すると、設定しているSnapMirror Policyなども確認できます。

74.SnapMirror info

Advanced Viewの確認

ONTAP 9.12.1からBlueXPとSystem Managerは統合されています。

これにより、Standard Viewで設定できない内容も設定することができます。

FSxNを選択した状態でSwitch to Advanced Viewをクリックします。

すると。以下のようにSystem Managerの画面が表示されます。

75.FsxId0697d57142a5e44fbダッシュボード

SnapMirrorのより詳細な情報も確認できます。

81.保護_概要

78.SnapMirror relastion ship

転送されたSnapShot Copyも確認できます。

79.SnapMirrorのSnapshot

また、ユーザーやクラスターピアリング、SVMピアリングといった情報も確認可能です。

80.クラスタ設定

ボリュームの詳細も確認しましょう。

82.ボリューム_vol1

大量の情報を浴びることができて私は好きです。

FSxNをGUIでサクッと管理したい時に

NetApp BlueXPでAmazon FSx for NetApp ONTAPの操作をしてみました。

FSxNをGUIでサクッと管理したい時に使うと良いかと思います。

また、ONTAP CLI中心だと気づけなかった思わぬ設定項目に気づくことができそうですね。

この記事が誰かの助けになれば幸いです。

以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!