Skip to main content

AWSでのWorkspace Execution

このガイドに従って、AWSプライベートデータ処理用にWorkspace Executionモジュールをデプロイします。

必要条件

Workspace Executionモジュールを展開する前に、プライベートデータ用のAWSアカウントとVPCのセットアップページで次の手順を完了する必要があります。

  1. VPCの作成」セクションで説明されているように、Alteryx One Platform専用のVPCが設定されている。

  2. IAMの設定」セクションで説明されているように、サービスアカウントと、サービスアカウントに紐付いたベースIAMロールが用意されている。

  3. プライベートデータ処理のプロビジョニングをトリガーする」セクションで説明されているように、プライベートデータ処理のプロビジョニングが正常にトリガーされている。

アカウントのセットアップ

ステップ1: IAMの設定

ステップ1a: Workspace Execution IAMポリシーの作成

注記

AAC_CEFD_SA_Policyは、ポリシー名の例です。ポリシーには任意の名前を指定できますが、名前は「AAC_CEFD」で始まる必要があります

カスタムIAMポリシーを作成する必要があります。名前を「AAC_CEFD_SA_Policy」とし、次のポリシードキュメントを使用します。ビジュアルエディターではなくJSONタブを使用することをお勧めします。実行するには、Alteryx Oneに一部*権限が必要です。ポリシーの作成時に、セキュリティ警告が何件か発生する場合があります。IAMポリシードキュメントでは、ロールの作成がサポートされており、Lambda関数がロールを引き受けるためのインラインポリシーが含まれています。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::*:role/*",
            "Condition": {
                "StringEqualsIfExists": {
                    "iam:PassedToService": [
                        "ec2.amazonaws.com",
                        "ec2.amazonaws.com.cn"
                    ]
                }
            }
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "eks:*",
                "iam:CreateServiceLinkedRole",
                "kms:CreateGrant",
                "kms:Decrypt",
                "kms:DescribeKey",
                "kms:Encrypt",
                "kms:GetKeyPolicy",
                "kms:GetKeyRotationStatus",
                "kms:ListGrants",
                "kms:ListResourceTags",
                "kms:ListRetirableGrants",
                "kms:PutKeyPolicy",
                "kms:RetireGrant",
                "kms:RevokeGrant",
                "kms:ScheduleKeyDeletion",
                "kms:TagResource",
                "kms:UntagResource"
            ],
            "Resource": [
                "arn:aws:eks:*:*:addon/*/*/*",
                "arn:aws:eks:*:*:cluster/*",
                "arn:aws:eks:*:*:nodegroup/*/*/*",
                "arn:aws:eks:*:*:identityproviderconfig/*/*/*/*",
                "arn:aws:eks:*:*:access-entry/*/*/*",
                "arn:aws:kms:*:*:key/*",
                "arn:aws:iam::*:role/*"
            ]
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:CreateOpenIDConnectProvider",
                "iam:CreatePolicy",
                "iam:CreatePolicyVersion",
                "iam:CreateRole",
                "iam:DeleteOpenIDConnectProvider",
                "iam:DeletePolicy",
                "iam:DeletePolicyVersion",
                "iam:DeleteRole",
                "iam:DeleteRolePolicy",
                "iam:DetachRolePolicy",
                "iam:GetOpenIDConnectProvider",
                "iam:GetPolicy",
                "iam:GetPolicyVersion",
                "iam:GetRole",
                "iam:GetRolePolicy",
                "iam:GetUser",
                "iam:GetUserPolicy",
                "iam:ListAttachedRolePolicies",
                "iam:ListAttachedUserPolicies",
                "iam:ListGroupsForUser",
                "iam:ListInstanceProfilesForRole",
                "iam:ListPolicyTags",
                "iam:ListPolicyVersions",
                "iam:ListRolePolicies",
                "iam:PassRole",
                "iam:PutRolePolicy",
                "iam:TagOpenIDConnectProvider",
                "iam:TagPolicy",
                "iam:TagRole",
                "iam:UntagOpenIDConnectProvider",
                "iam:UntagPolicy",
                "iam:UntagRole",
                "iam:UpdateAssumeRolePolicy",
                "iam:UpdateOpenIDConnectProviderThumbprint",
                "iam:UpdateRole"
            ],
            "Resource": [
                "arn:aws:iam::*:policy/*",
                "arn:aws:iam::*:oidc-provider/*",
                "arn:aws:iam::*:user/*",
                "arn:aws:iam::*:role/*"
            ]
        },
        {
            "Sid": "VisualEditor3",
            "Effect": "Allow",
            "Action": [
                "autoscaling:*",
                "ec2:*",
                "eks:CreateCluster",
                "eks:DescribeAddonVersions",
                "eks:ListClusters",
                "elasticloadbalancing:*",
                "events:DeleteRule",
                "events:DescribeRule",
                "events:ListTagsForResource",
                "events:ListTargetsByRule",
                "events:PutRule",
                "events:PutTargets",
                "events:RemoveTargets",
                "iam:AddRoleToInstanceProfile",
                "iam:CreateInstanceProfile",
                "iam:DeleteInstanceProfile",
                "iam:GetAccountName",
                "iam:GetInstanceProfile",
                "iam:ListAccountAliases",
                "iam:ListRoles",
                "iam:RemoveRoleFromInstanceProfile",
                "iam:TagInstanceProfile",
                "iam:UntagInstanceProfile",
                "kms:CreateKey",
                "lambda:AddPermission",
                "lambda:CreateFunction",
                "lambda:DeleteFunction",
                "lambda:GetFunction",
                "lambda:GetFunctionCodeSigningConfig",
                "lambda:GetPolicy",
                "lambda:ListVersionsByFunction",
                "lambda:RemovePermission",
                "lambda:UntagResource",
                "lambda:UpdateFunctionCode",
                "lambda:UpdateFunctionConfiguration",
                "lambda:tagResource",
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:DeleteLogGroup",
                "logs:DeleteLogStream",
                "logs:DescribeLogGroups",
                "logs:ListTagsForResource",
                "logs:ListTagsLogGroup",
                "logs:PutLogEvents",
                "logs:PutRetentionPolicy",
                "logs:TagLogGroup",
                "logs:TagResource",
                "logs:UntagLogGroup",
                "logs:UntagResource",
                "memorydb:CreateAcl",
                "memorydb:CreateCluster",
                "memorydb:CreateSubnetGroup",
                "memorydb:CreateUser",
                "memorydb:DeleteAcl",
                "memorydb:DeleteCluster",
                "memorydb:DeleteSubnetGroup",
                "memorydb:DeleteUser",
                "memorydb:DescribeACLs",
                "memorydb:DescribeClusters",
                "memorydb:DescribeSubnetGroups",
                "memorydb:DescribeUsers",
                "memorydb:ListTags",
                "memorydb:TagResource",
                "memorydb:UpdateAcl",
                "memorydb:UpdateCluster",
                "memorydb:UpdateSubnetGroup",
                "memorydb:UpdateUser",
                "networkmanager:Describe*",
                "networkmanager:Get*",
                "networkmanager:List*",
                "s3:CreateBucket",
                "s3:DeleteBucket",
                "s3:DeleteBucketPolicy",
                "s3:DeleteBucketWebsite",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion",
                "s3:DeleteObjectVersionTagging",
                "s3:GetAccelerateConfiguration",
                "s3:GetBucketAcl",
                "s3:GetBucketCORS",
                "s3:GetBucketLocation",
                "s3:GetBucketLogging",
                "s3:GetBucketObjectLockConfiguration",
                "s3:GetBucketOwnershipControls",
                "s3:GetBucketPolicy",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketPublicAccessBlock",
                "s3:GetBucketRequestPayment",
                "s3:GetBucketTagging",
                "s3:GetBucketVersioning",
                "s3:GetBucketWebsite",
                "s3:GetEncryptionConfiguration",
                "s3:GetLifecycleConfiguration",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectVersion",
                "s3:GetObjectVersionAcl",
                "s3:GetObjectVersionAttributes",
                "s3:GetObjectVersionForReplication",
                "s3:GetObjectVersionTagging",
                "s3:GetObjectVersionTorrent",
                "s3:GetReplicationConfiguration",
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "s3:ListBucketVersions",
                "s3:PutAccelerateConfiguration",
                "s3:PutBucketAcl",
                "s3:PutBucketCORS",
                "s3:PutBucketLogging",
                "s3:PutBucketObjectLockConfiguration",
                "s3:PutBucketOwnershipControls",
                "s3:PutBucketPolicy",
                "s3:PutBucketPublicAccessBlock",
                "s3:PutBucketRequestPayment",
                "s3:PutBucketTagging",
                "s3:PutBucketVersioning",
                "s3:PutBucketWebsite",
                "s3:PutEncryptionConfiguration",
                "s3:PutLifecycleConfiguration",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectVersionAcl",
                "s3:PutObjectVersionTagging",
                "sts:GetCallerIdentity"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor4",
            "Effect": "Allow",
            "Action": "secretsmanager:*",
            "Resource": "arn:aws:secretsmanager:*:*:secret:*"
        }
    ]
}

ステップ1b: IAMポリシーのタグ付け

ステップ1aで作成したカスタムIAMポリシーにタグを付けます。

タグ名

AACResource

aac_sa_custom_policy

ステップ1c: IAMポリシーの付与

プライベートデータ用のAWSアカウントとVPCのセットアップページで作成したaac_automation_saサービスアカウントに、AAC_CEFD_SA_Policy IAMポリシーを付与します。

Step 1d: Enable CEFD Environment Customization

CEFD environment customization lets customers upload custom drivers and connectors to an S3 bucket. The feature flag feature.privateDataPlaneHandling.admin.cEFDEnvironmentCustomizationsEnabled to be set to true to enable customization setup.

Step 1d.1 Create CEFD Customization IAM Policy

注記

AAC_CEFD_Customization_SA_Policy as policy name is referred to as an example in this guide. You can choose any name for the policy, but the name must start with AAC_CEFD_customization.

You need to create a custom IAM policy. Name it AAC_CEFD_Customization_SA_Policy and attach the following policy document.

We recommend using the JSON tab instead of the visual editor. Alteryx Analytics Cloud does require some permissions to run. Expect some security warnings when you create the policy.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor3",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:DeleteBucket",
                "s3:DeleteBucketPolicy",
                "s3:DeleteBucketWebsite",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion",
                "s3:DeleteObjectVersionTagging",
                "s3:GetAccelerateConfiguration",
                "s3:GetBucketAcl",
                "s3:GetBucketCORS",
                "s3:GetBucketLocation",
                "s3:GetBucketLogging",
                "s3:GetBucketObjectLockConfiguration",
                "s3:GetBucketOwnershipControls",
                "s3:GetBucketPolicy",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketPublicAccessBlock",
                "s3:GetBucketRequestPayment",
                "s3:GetBucketTagging",
                "s3:GetBucketVersioning",
                "s3:GetBucketWebsite",
                "s3:GetEncryptionConfiguration",
                "s3:GetLifecycleConfiguration",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectVersion",
                "s3:GetObjectVersionAcl",
                "s3:GetObjectVersionAttributes",
                "s3:GetObjectVersionForReplication",
                "s3:GetObjectVersionTagging",
                "s3:GetObjectVersionTorrent",
                "s3:GetReplicationConfiguration",
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "s3:ListBucketVersions",
                "s3:PutAccelerateConfiguration",
                "s3:PutBucketAcl",
                "s3:PutBucketCORS",
                "s3:PutBucketLogging",
                "s3:PutBucketObjectLockConfiguration",
                "s3:PutBucketOwnershipControls",
                "s3:PutBucketPolicy",
                "s3:PutBucketPublicAccessBlock",
                "s3:PutBucketRequestPayment",
                "s3:PutBucketTagging",
                "s3:PutBucketVersioning",
                "s3:PutBucketWebsite",
                "s3:PutEncryptionConfiguration",
                "s3:PutLifecycleConfiguration",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectVersionAcl",
                "s3:PutObjectVersionTagging"
            ],
            "Resource": "*"
        }
    ]
}
Step 1d.2: Tag the IAM policy

Tag the custom IAM policy created on Step 1d.1.

Tag Name

Value

AACResource

aac_sa_custom_policy

Step 1d.3: Attach IAM policy

Attach the AAC_CEFD_Customization_SA_Policy IAM policy to the aac_automation_sa service account created in Create a IAM user (service account).

ステップ2: サブネットの設定

注記

Designer CloudおよびEMRを購入した場合は、 Live Query and EMR Serverless in AWSの説明に従ってサブネットを設定します。EMRリソースとCEfDリソースの両方でオプションのサブネットが共有されます。

プライベートデータ処理環境のWorkspace Executionには、1つのサブネットグループが必要です。このグループには3つの個別のサブネットが含まれており、それぞれ異なるアベイラビリティゾーンに紐付きます。

  • public (必須): このグループでサービスは実行されませんが、VPCからのエグレスに使用されます。

  • eks_node group (required) - The EKS cluster uses this subnet to execute Alteryx software jobs (connectivity, conversion, processing, publishing).

  • public (必須): このグループでサービスは実行されませんが、VPCからのエグレスに使用されます。

  • private (必須): このグループは、PDP専用にサービスを実行します。

  • オプショングループ: データ処理環境内でWorkspace Executionを有効にした場合は、このグループを使用します。このオプションを有効にすると、AMIスウォームがこのサブネットで実行され、クラウドで実行されるDesignerの処理ジョブが処理されます。

ステップ2a: VPCでサブネットを作成する

aac-vpc VPCでサブネットを設定します。

サブネットを作成し、以下の例に示すようにタグ付けします。CIDRとサブネットの値は、ネットワークアーキテクチャに合わせて調整できます。

大規模なアドレス空間は、完全にスケールアウトされたクラスターに対応するように設計されています。必要に応じてアドレス空間を小さくすることもできますが、処理負荷が高くなったときにスケーリングに問題が発生する可能性があります。

重要

表に記載されているように、タグ名タグ値を使用してサブネットにタグを付ける必要があります。

CIDR

サブネット名

サブネット

AZ

タグ名

タグ値

10.10.0.0/21

オプション

10.10.4.0/24

AZa

AACSubnet

オプション

オプション

10.10.5.0/24

AZb

AACSubnet

オプション

オプション

10.10.6.0/24

AZc

AACSubnet

オプション

10.10.0.0/21

eks_control

10.10.0.0/27

AZa

AACSubnet

eks_control

eks_control

10.10.0.32/27

AZb

AACSubnet

eks_control

eks_control

10.10.0.64/27

AZc

AACSubnet

eks_control

public

10.10.0.128/27

AZa

AACSubnet

public

public

10.10.0.160/27

AZb

AACSubnet

public

public

10.10.0.192/27

AZc

AACSubnet

public

private

10.10.1.0/25

AZa

AACSubnet

Private

private

10.10.1.128/25

AZb

AACSubnet

Private

private

10.10.2.0/25

AZc

AACSubnet

Private

option

10.10.4.0/24

AZa

AACSubnet

Option

option

10.10.5.0/24

AZb

AACSubnet

Option

option

10.10.6.0/24

AZc

AACSubnet

Option

ステップ2b: サブネットのルートテーブル

サブネット用のルートテーブルを作成します。

注記

このルートテーブルは一例です。

サブネット名

ルートの宛先

ターゲット

コメント

eks_node

/18 CIDR Block

/21 CIDR Block

<s3 prefix id>

0.0.0.0/0

local

local

<vpce endpoint id>

<gateway id>

Configure the same routes to all 3 AZs subnet routing tables.

eks_control

/18 CIDR Block

/21 CIDR Block

<s3 prefix id>

0.0.0.0/0

local

local

<vpce endpoint id>

<gateway id>

Configure the same routes to all 3 AZs subnet routing tables.

パブリック

/18 CIDRブロック

/21 CIDRブロック

0.0.0.0/0

ローカル

ローカル

<gateway id>

3つのAZサブネットルーティングテーブルすべてに同じルートを設定します。

プライベート

/18 CIDRブロック

/21 CIDRブロック

<s3 prefix id>

0.0.0.0/0

ローカル

ローカル

<vpce endpoint id>

<gateway id>

3つのAZサブネットルーティングテーブルすべてに同じルートを設定します。

0.0.0.0/0はパブリックネットワークに送信される必要があります。

オプション

/21 CIDRブロック

<s3 prefix id>

0.0.0.0/0

ローカル

<vpce endpoint id>

<gateway id>

3つのAZサブネットルーティングテーブルすべてに同じルートを設定します。

通常、0.0.0.0/0はパブリックネットワークに送信される必要があります。

注記

<gateway id>は、お使いのネットワークアーキテクチャに応じて、各AZに作成されるゾーナルNATゲートウェイまたはトランジットゲートウェイのいずれかになります。NATゲートウェイの場合は、パブリックサブネットのAZごとにNATゲートウェイを作成します。

プライベートデータ処理

注意

プライベートデータ処理を設定した後に、Alteryx Oneをプロビジョニングされたパブリッククラウドリソースを変更または削除すると、不整合が生じる可能性があります。これらの不整合により、ジョブの実行中またはプライベートデータ処理設定のプロビジョニング解除時にエラーが発生する可能性があります。

ステップ1: Workspace Executionのデプロイをトリガーする

データプレーンのプロビジョニングは、Alteryx One内の管理者コンソールからトリガーされます。このページを表示するには、ワークスペース内のワークスペース管理者権限が必要です。

  1. Alteryx Oneのランディングページで[プロファイル]メニューを選択し、[ワークスペース管理者]を選択します。

  2. 管理者コンソールから[プライベートデータ処理]を選択し、[Processing]を選択します。

  3. Workspace Executionチェックボックスを選択し、[更新]を選択します。

[更新]を選択すると、AWSアカウント内のクラスターとリソースのデプロイがトリガーされます。これにより、一連の検証チェックが実行され、AWSアカウントの設定が正しいことが確認されます。

注記

プロビジョニングプロセスの完了には、約35-40分かかります。

プロビジョニングが完了すると、作成したリソース(EC2インスタンスやノードグループなど)をAWSコンソールから表示できます。これらは絶対に自分で変更しないでください。手動で変更すると、プライベートデータプレーンの機能に問題が発生する可能性があります。

Step 2: Update KMS Key policy

After successful creation of Private Data Processing, a custom role credential-service-role is created in the account to allow the k8s credential service account to retrieve private data access credentials from the key vault.

Update the policy of the KMS Key created in Create a Symmetric Key for Secure Vault to allow the custom role credential-service-role with the permissions below.

注記

<account id> is the AWS account number where Private Data Processing has been provisioned.

  1. Go to Key Management Services and select the key created in Create a Symmetric Key for Secure Vault.

  2. Select Key Policy and click Edit.

  3. Delete the default permission and update with the permissions below:

    {
      "Version": "2012-10-17",
      "Id": "key-consolepolicy-3",
      "Statement": [
        {
          "Sid": "Enable IAM User Permissions",
          "Effect": "Allow",
          "Principal": { "AWS": "arn:aws:iam::<account id>:root" },
          "Action": "kms:*",
          "Resource": "*"
        },
        {
          "Sid": "Allow use of the key",
          "Effect": "Allow",
          "Principal": { "AWS": "arn:aws:iam::<account id>:role/credential-service-role" },
          "Action": [
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey"
          ],
          "Resource": "*"
        }
      ]
    }
  4. Click Save changes.