配置 Salesforce 连接 - AWS Glue

配置 Salesforce 连接

要配置 Salesforce 连接,请执行以下操作:

  1. 在 AWS Secrets Manager 中,创建一个包含以下详细信息的密钥:

    1. 对于JWT_TOKEN 授权类型,密钥应包含 JWT_TOKEN 密钥及其值。

    2. 对于 AuthorizationCode 授权类型:

      1. 对于 AWS 托管式互联应用程序,必须提供一个空密钥或具有某些临时值的密钥。

      2. 对于客户管理的互联应用程序,密钥应包含以 USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET 为键的互联应用程序Consumer Secret

    3. 注意:您必须在 AWS Glue 中为您的连接创建一个密钥。

  2. 在 AWS Glue Data Catalog 中,按照以下步骤创建连接:

    1. 选择连接类型时,请选择“Salesforce”。

    2. 提供您想要连接到的 Salesforce 实例的 INSTANCE_URL。

    3. 提供 Salesforce 环境。

    4. 选择 AWS Glue 可以代入并有权执行以下操作的 AWS IAM 角色:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "ec2:CreateNetworkInterface", "ec2:DescribeNetworkInterface", "ec2:DeleteNetworkInterface", ], "Resource": "*" } ] }
    5. 选择要用于连接的 OAuth2 授权类型。授权类型决定了 AWS Glue 如何与 Salesforce 通信以请求访问您的数据。您选择的授权类型会影响您在创建连接之前必须满足的要求。您可以选择以下任一类型:

      • JWT_BEARER 授权类型:此授权类型非常适合自动化场景,因为它允许预先创建一个 JSON Web 令牌(JWT),并附带特定用户在 Salesforce 实例中的权限。创建者可以控制 JWT 的有效期。AWS Glue 能够使用 JWT 来获取用于调用 Salesforce API 的访问令牌。

        此流程要求用户已在其 Salesforce 实例中创建关联的应用程序,以便为用户发放基于 JWT 的访问令牌。

        有关为 JWT 持有者 OAuth 流程创建关联应用程序的信息,请参阅用于服务器到服务器集成的 OAuth 2.0 JWT 持有者流程。要使用 Salesforce 关联应用程序设置 JWT 持有者流程,请参阅为 Salesforce 设置 JWT 持有者 OAuth 流程

      • AUTHORIZATION_CODE 授权类型:此授权类型被视为“三足型”OAuth,因为它依赖于将用户重定向到第三方授权服务器来对用户进行身份验证。它用于通过 AWS Glue 控制台创建连接。默认情况下,创建连接的用户可以依赖于 AWS Glue 关联应用程序(AWS Glue 托管客户端应用程序),在该应用程序中,除了 Salesforce 实例 URL 之外,用户无需提供任何与 OAuth 相关的信息。AWS Glue 控制台会将用户重定向到 Salesforce,用户必须登录并向 AWS Glue 授予所请求的权限,以访问其 Salesforce 实例。

        用户仍然可以选择在 Salesforce 中创建自己的关联应用程序,并在通过 AWS Glue 控制台创建连接时提供自己的客户端 ID 和客户端密钥。在这种情况下,他们仍会重定向到 Salesforce,以便登录并授权 AWS Glue 访问其资源。

        此授权类型会生成刷新令牌和访问令牌。访问令牌的有效期很短,可以通过刷新令牌在不需要用户干预的情况下自动刷新。

        有关为授权码 OAuth 流程创建互联应用程序的信息,请参阅为 Salesforce 设置授权代码流

    6. 选择您想要在 AWS Glue 中用于此连接的 secretName,以存储 OAuth 2.0 令牌。

    7. 如果要使用网络,请选择网络选项。

  3. 在 AWS Glue 作业配置中,提供 connectionName 作为附加网络连接

  4. 向与您的 AWS Glue 作业关联的 IAM 角色授予读取 secretName 的权限。

  5. 如果提供网络选项,则还授予 IAM 角色以下权限:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeNetworkInterface", "ec2:DeleteNetworkInterface", ], "Resource": "*" } ] }

使用 AWS CLI 配置 Salesforce 连接

您可以使用 AWS CLI 创建 Salesforce 连接:

aws glue create-connection --connection-input \ "{\"Name\": \"salesforce-conn1\",\"ConnectionType\": \"SALESFORCE\",\"ConnectionProperties\": {\"ROLE_ARN\": \"arn:aws:iam::123456789012:role/glue-role\",\"INSTANCE_URL\": \"https://example.my.salesforce.com\"},\"ValidateCredentials\": true,\"AuthenticationConfiguration\": {\"AuthenticationType\": \"OAUTH2\",\"SecretArn\": \"arn:aws:secretsmanager:us-east-1:123456789012:secret:salesforce-conn1-secret-IAmcdk\",\"OAuth2Properties\": {\"OAuth2GrantType\": \"JWT_BEARER\",\"TokenUrl\": \"https://login.salesforce.com/services/oauth2/token\"}}}" \ --endpoint-url https://glue.us-east-1.amazonaws.com \ --region us-east-1