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
- Opprett en integrasjonsbruker fra Oppsett i Salesforce.
-
Konfigurer brukeren med disse verdiene.
Felt Verdi Brukerlisens Salesforce-integrering Profil Minimumstilgang - bare API-integrasjoner - Tildel tillatelsessettlisensen Salesforce API-integrering til brukeren.
-
Opprett et tillatelsessett som gir disse tillatelsene:
- API-aktivert
- Spørre alle filer
- 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")