2

我正在尝试利用 aws-appflow 从 salesforce 检索数据,但无法使用 boto3 创建连接器配置文件。我不断得到Service Error

我的尝试:

    appflow.create_connector_profile(
      connectorProfileName='appflow-sfdc-test',
      kmsArn='{{ encryption-key-arn }}',
      connectorType='Salesforce',
      connectionMode='Public',
      connectorProfileConfig={
        'connectorProfileProperties': {
            'Salesforce': {
                'instanceUrl': 'https://{{ our-domain }}.my.salesforce.com',
                'isSandboxEnvironment': False
            }
        },
        'connectorProfileCredentials': {
            'Salesforce': {  
                'accessToken': '{{ access-token }}',
                'refreshToken': '{{ refresh-token }}',
                'clientCredentialsArn': '{{ secretsmanager arn with the client id & secret }}'
            }
        }
      }
    )

# returns this error
botocore.errorfactory.InternalServerException: An error occurred (InternalServerException) when calling the CreateConnectorProfile operation (reached max retries: 4): Service Error

我不确定我做错了什么。我以为我正确地遵循了他们的指示,但我不知道在哪里可以获得有关此错误的更多信息。

4

1 回答 1

1

AppFlow Salesforce 集成的 AWS 文档有点混乱。

下面是一个有效的 AWS CLI 片段:

aws appflow create-connector-profile \
--connector-profile-name salesforce-connector \
--connector-type Salesforce \
--kms-arn arn:aws:kms:$region:$account_id:key/$key_id \
--connection-mode Public \
--connector-profile-config '{
    "connectorProfileProperties": {
        "Salesforce": {
            "instanceUrl": "https://your-domain.my.salesforce.com",
            "isSandboxEnvironment": false
        }
    },
    "connectorProfileCredentials": {
        "Salesforce": {
            "oAuthRequest": {
                "authCode": $oauth_authorization_code,
                "redirectUri": $redirect_uri
            },
            "clientCredentialsArn": "arn:aws:secretsmanager:$region:$account:secret:$secret"
        }
    }
}'

请注意,我们不需要accessTokenrefreshToken因为它们将在创建时使用authCode和凭据从clientCredentialsArn.

另一点是 Secret Manager 机密应该使用与参数中相同的 KMS 密钥进行加密--kms-arn

秘密clientCredentialsArn内容应类似于:

{
  "clientId": "XXX",
  "clientSecret": "YYY"
}
于 2021-04-07T20:29:40.447 回答