Loading
Generere en gruppetilordningsfil for eksternt lagrede filer

Generere en gruppetilordningsfil for eksternt lagrede filer

Klargjør eksisterende filer for Amazon Bedrock eller Amazon Kendra ved å generere en tilordningsfil som knytter Salesforce-filer til deres Amazon S3-plasseringer. Du må utføre denne oppgaven bare hvis du har eksisterende filer i Amazon S3 som du vil søke i.

Nødvendige utgaver

Nødvendig brukertillatelse
For å aktivere søk i eksternt lagringssted: Tilpasse program
For å vise tillatelsessett: Vise oppsett og konfigurasjon
For å tildele tillatelsessett: Tildele tillatelsessett
For å opprette lokale eksterne klientapper: Opprette, redigere og slette eksterne klientapper

Før du begynner må du kontrollere at du har:

  • En Salesforce-organisasjon med en ekstern Amazon S3-datakilde av typen ContentHubAWSS3. Se Konfigurere semantisk søk.
  • En AWS-konto med tillatelse til å opprette Lambda-funksjoner, IAM-roller og S3-samlekategorier.
  • En Amazon S3-samlekategori der du kan lagre tilordningsfilen.

Opprette en Salesforce-integrasjonsbruker

  1. Opprett en integrasjonsbruker fra Oppsett i Salesforce.
  2. Konfigurer brukeren med disse verdiene.
    Felt Verdi
    Brukerlisens Salesforce-integrering
    Profil Minimumstilgang - bare API-integrasjoner
  3. Tildel tillatelsessettlisensen Salesforce API-integrering til brukeren.
  4. Opprett et tillatelsessett som gir disse tillatelsene:
    • API-aktivert
    • Spørre alle filer
  5. Tildel tillatelsessettet til integrasjonsbrukeren.

Hvis du vil ha mer informasjon, kan du se Integrasjonsbrukere i Salesforce Developer-dokumentasjonen og Opprette tillatelsessett.

Opprette en ekstern klientapp

Opprett en lokal ekstern klientapp som bruker OAuth 2.0-klientlegitimasjonsflyten. I OAuth-innstillingene legger du til omfanget Behandle brukerdata via API-er (API) og konfigurerer Salesforce-integrasjonsbrukeren som kjøringsbruker.

Du finner detaljerte instruksjoner i Opprette en ekstern klientapp og Konfigurere en klientlegitimasjonsflyt.

Opprette tilordningsfilen

Distribuer en AWS Lambda-funksjon som spør Salesforce etter eksternt lagrede filer og genererer en tilordning mellom hver Salesforce ContentDocument-ID og Amazon S3-plasseringen.

Konfigurer funksjonen via miljøvariabler. Legg ved en IAM-utføringsrolle med s3:PutObject som gir tillatelse til å skrive tilordningsfilen til den utpekte S3-samlekategorien og sende logger til Amazon CloudWatch.

Du finner instruksjoner i Distribuere Python Lambda-funksjoner, Bruk Lambda-miljøvariabler, Lambda-utføringsrolle i AWS-dokumentasjonen.

Her er referanse til Lambda-kode:

# 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")
 
Laster
Salesforce Help | Article