
NetApp BlueXPでAmazon FSx for NetApp ONTAPの操作をしてみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
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を操作できるまでの手順は以下のとおり
- NetAppのアカウント作成および、NetApp BlueXPにサインイン
 - BlueXPとAWSアカウント連携用のIAMロールの作成と連携
 - BlueXP Connectorの作成
 
 - BlueXPでFSxNを管理する際は、実質BlueXP Connecotrが必須
 
NetAppのアカウント作成
まず、NetAppアカウントの作成をします。
https://bluexp.netapp.com/ja/ にアクセスします。

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

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

Eメールが届くので、Eメールのリンクをクリックして、認証をします。
続いて、作成したアカウントを使ってサインインします。

Welcomeされました。
BlueXPとAWSアカウント連携用のIAMロールの作成と連携
次に、BlueXPとAWSアカウント連携用のIAMロールの作成と連携をします。
BlueXPとAWSアカウントの連携ができなければ、当然ですがFSxNの操作を行うことができません。
試しに、BlueXPとAWSアカウントの連携をせずに、FSxNを作成しようとしてみます。
Add working environmentをクリックします。
AWSを選択して、Amazon FSx for ONTAPのAdd newをクリックします。

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

IAMロールを作ってあげましょう。BlueXPRoleという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をクリックします。

Account credentialsのAdd Credentialsをクリックします。

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

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

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

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

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

FSxNの作成
Credentialを作成したので、FSxNを作成しようとしてみます。
先ほど作成したCredentialを選択してNextをクリックします。

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

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

BlueXP Connectorの作成
「ここでBlueXP Connectorの出番か!!」と思い、BlueXP Connectorを作成します。
本当は先ほど作成したBlueXPのRoleに`ec2:DescribeRegions`など必要な権限をIAMポリシーに付与してあげれば良いだけです。FSxNを作成するだけであれば、BlueXP Connectorをこのタイミングで作成する必要はありません。
ジョブメニューのConnectorからCreate your first Connectorをクリックします。

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

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

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

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として登録します。

BlueXP Connectorの作成ウィザードに戻ります。
デプロイ先のリージョンと先ほど作成したCredentialを選択してNextをクリックします。

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

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

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

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

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

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

作成されたBlueXP Connector関連のリソースを確認します。
IAMロールには2つのインラインポリシーがアタッチされていました。

それぞれのポリシーは以下のとおりです。長すぎたので折りたたんでいます。
- 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ですね。

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

ユーザーデータは以下のとおりです。
{
  "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からのアクセスが許可されています。

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インスタンスのインスタンスプロファイルが登録されていますね。

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

FSxNの作成 (リトライ)
FSxNの作成をリトライしてみます。
BlueXP RoleをCredentialに指定してNextをクリックします。

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

ここで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+=,.@-]*"}とエラーになりました。

BlueXP RoleとCredential名がそのままセッション名になるようですね。スペースなどセッション名に含んではならない文字はCredential名に含めないようにしましょう。
BlueXPRoleに名前を変更して再チャレンジすると、エラーなく次の画面に遷移できました。
リージョンやVPC、サブネット、Security Groupを選択してNextをクリックします。

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

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

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

Single-AZデプロイのフローに戻ります。
暗号化で使用するキーを選択します。今回はデフォルトキーでNextをクリックします。

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

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

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

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


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

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

作成したFSxNの確認
Enter Working Environmentをクリックして、作成したFSxNの詳細を確認をします。
すると、There is no connectivityと表示されました。

これはBlueXP ConnectorのEC2インスタンスからFSxNへのHTTPS通信が許可されていないためです。FSxNのSecurity Groupのインバウンドルールで許可してあげましょう。
設定後リフレッシュすると、ストレージやSVMの情報が表示されました。

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

ボリュームの作成
試しにボリュームを作ってみましょう。
VolumeタブからAdd Volumeをクリックします。

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

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

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

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

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

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


AWSマネジメントコンソールで確認できる情報とほぼ同じですね。
一通り情報を見た後、Timelineを確認するとボリューム作成などのイベントが記録されていました。

既存のFSxNの検索
BlueXPで作成したFSxN以外もBlueXP上で管理できるようにすることもできます。
CanvasのAdd Working EnvironmentからAmazon FSx for ONTAPのDiscover Existingをクリックします。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SnapMirrorの情報を確認します。
無事レプリケーションできていそうですね。

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

Advanced Viewの確認
ONTAP 9.12.1からBlueXPとSystem Managerは統合されています。
これにより、Standard Viewで設定できない内容も設定することができます。
FSxNを選択した状態でSwitch to Advanced Viewをクリックします。
すると。以下のようにSystem Managerの画面が表示されます。

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


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

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

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

大量の情報を浴びることができて私は好きです。
FSxNをGUIでサクッと管理したい時に
NetApp BlueXPでAmazon FSx for NetApp ONTAPの操作をしてみました。
FSxNをGUIでサクッと管理したい時に使うと良いかと思います。
また、ONTAP CLI中心だと気づけなかった思わぬ設定項目に気づくことができそうですね。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!







