Loading
Skapa en satsmappningsfil för externt lagrade filer

Skapa en satsmappningsfil för externt lagrade filer

Förbered befintliga filer för Amazon Bedrock eller Amazon Kendra genom att skapa en mappningsfil som associerar Salesforce-filer med deras Amazon S3-platser. Du måste endast utföra denna uppgift om du har befintliga filer i Amazon S3 som du vill söka i.

Versioner som krävs

Användarbehörigheter som krävs
Aktivera sökning efter extern lagring: Anpassa applikation
Visa behörighetsuppsättningar: Visa inställningar och konfigurering
Så här tilldelar du behörighetsuppsättningar: Tilldela behörighetsuppsättningar
Skapa lokala externa klientappar: Skapa, redigera och ta bort externa klientappar

Innan du börjar, kontrollera att du har:

  • En Salesforce-organisation med en extern Amazon S3-datakälla av typen ContentHubAWSS3. Se Konfigurera semantisk sökning.
  • Ett AWS-konto med behörighet att skapa Lambda-funktioner, IAM-roller och S3-hinkar.
  • En Amazon S3-hink där mappningsfilen ska lagras.

Skapa en Salesforce-integreringsanvändare

  1. Från Salesforces inställningar, skapa en integreringsanvändare.
  2. Konfigurera användaren med dessa värden.
    Fält Värde
    Användarlicens Salesforce-integrering
    Profil Minsta åtkomst - Endast API-integreringar
  3. Tilldela behörighetsuppsättningslicensen Salesforce API-integrering till användaren.
  4. Skapa en behörighetsuppsättning som beviljar dessa behörigheter:
    • API aktiverat
    • Fråga alla filer
  5. Tilldela behörighetsuppsättningen till integreringsanvändaren.

Mer information finns i Integreringsanvändare i Salesforce Developer-dokumentation och skapa behörighetsuppsättningar.

Skapa en extern klientapp

Skapa en lokal extern klientapp som använder OAuth 2.0-klientinloggningsuppgifterflödet. I OAuth-inställningarna, lägg till omfattningen Hantera användardata via APIs (api) och konfigurera Salesforce-integreringsanvändaren som körningsanvändare.

Detaljerade instruktioner finns i Skapa en extern klientapp och konfigurera ett klientinloggningsuppgifterflöde.

Skapa mappningsfilen

Distribuera en AWS Lambda-funktion som frågar Salesforce efter externt lagrade filer och skapar en mappning mellan varje Salesforce ContentDocument-ID och dess Amazon S3-plats.

Konfigurera funktionen genom miljövariabler. Bifoga en IAM-körningsroll med s3:PutObject som beviljar behörighet att skriva mappningsfilen till den utsedda S3-hinken och skicka loggar till Amazon CloudWatch.

För instruktioner, se Distribuera Python Lambda-funktioner, Använda Lambda-miljövariabler, Lambda-körningsroll i AWS-dokumentationen.

Här är referens Lambda-kod:

# 1. Authenticate to Salesforce (OAuth 2.0 Client Credentials)
token = sf_oauth_token(SF_INSTANCE_URL, SF_CLIENT_ID, SF_CLIENT_SECRET)

# 2. Query ContentVersion -> ContentDocumentId, ExternalDocumentInfo2, ExternalDataSource
soql = ("SELECT ContentDocumentId, ExternalDocumentInfo2, "
        "ExternalDataSource.NamedCredentialId, ExternalDataSource.MasterLabel "
        "FROM ContentVersion WHERE IsLatest=true AND ExternalDocumentInfo2!=null "
        "AND ExternalDataSource.Type='ContentHubAWSS3'")
records = sf_query_all(token, soql)

# 3. Resolve each Named Credential's S3 endpoint URL (Tooling API)
nc_url = {nc_id: sf_named_credential_url(token, nc_id)
          for nc_id in {r["ExternalDataSource"]["NamedCredentialId"] for r in records}}

# 4. Build the mapping keyed by the external document id
mapping = defaultdict(list)
for r in records:
    nc_id = r["ExternalDataSource"]["NamedCredentialId"]
    mapping[r["ExternalDocumentInfo2"]].append({
        "ContentDocumentId": r["ContentDocumentId"],
        "DataSourceLabel": r["ExternalDataSource"]["MasterLabel"],
        "NamedCredentialId": nc_id,
        "S3_Endpoint_URL": nc_url.get(nc_id),
    })

# 5. Upload the mapping JSON to S3
boto3.client("s3").put_object(
    Bucket=S3_BUCKET_NAME, Key=S3_FILE_NAME,
    Body=json.dumps(mapping, indent=4), ContentType="application/json")
 
Laddar
Salesforce Help | Article