breadcrumbDescription
Generer en batchtilknytningsfil for eksternt lagrede filer
Forbered eksisterende filer til Amazon Bedrock eller Amazon Kendra ved at generere en tilknytningsfil, der knytter Salesforce-filer til deres Amazon S3-placeringer. Du skal kun udføre denne opgave, hvis du har eksisterende filer i Amazon S3, som du ønsker at søge i.
EditionsHeading
| Brugertilladelser påkrævet | |
|---|---|
| Hvis du vil aktivere Ekstern lagersøgning: | Tilpas applikation |
| Hvis du vil se tilladelsessæt: | Vis opsætning og konfiguration |
| Hvis du vil tildele tilladelsessæt: | Tildel tilladelsessæt |
| Hvis du vil oprette lokale eksterne klientapps: | Opret, rediger og slet eksterne klientapps |
Før du går i gang, skal du bekræfte, at du har:
- En Salesforce-organisation med en ekstern Amazon S3-datakilde af typen ContentHubAWSS3. Se Opsæt semantisk søgning.
- En AWS-konto med tilladelse til at oprette Lambda-funktioner, IAM-roller og S3-inddelinger.
- En Amazon S3-inddeling, som tilknytningsfilen skal lagres i.
Opret en Salesforce-integrationsbruger
- Opret en integrationsbruger fra Opsætning i Salesforce.
-
Konfigurer brugeren med disse værdier.
Felt Værdi Brugerlicens Salesforce-integration Profil Mindste adgang - Kun API-integrationer - Tildel Salesforce API Integration-tilladelsessætlicensen til brugeren.
-
Opret et tilladelsessæt, der tildeler disse tilladelser:
- API aktiveret
- Forespørg i alle filer
- Tildel tilladelsessættet til integrationsbrugeren.
Hvis du ønsker yderligere oplysninger, kan du se Integrationsbrugere i Salesforce Developer-dokumentationen og Opret tilladelsessæt.
Opret en ekstern klientapp
Opret en lokal ekstern klientapp, der bruger OAuth 2.0-klientlegitimationsoplysningsforløbet. I OAuth-indstillingerne skal du tilføje omfanget Administrer brugerdata via API'er (api) og konfigurere Salesforce-integrationsbrugeren som kørsel som bruger.
Hvis du ønsker detaljerede instruktioner, kan du se Opret en ekstern klientapp og Konfigurer et legitimationsoplysningsforløb.
Opret tilknytningsfilen
Implementer en AWS Lambda-funktion, der forespørger på Salesforce for eksternt lagrede filer og genererer en tilknytning mellem hvert Salesforce ContentDocument-id og dets Amazon S3-placering.
Konfigurer funktionen gennem miljøvariabler. Vedhæft en IAM-kørselsrolle med s3:PutObject, der giver tilladelse til at skrive tilknytningsfilen til den udpegede S3-inddeling og sende logfiler til Amazon CloudWatch.
Hvis du ønsker instruktioner, kan du se Implementer Python Lambda-funktioner, Brug af Lambda-miljøvariabler, Lambda-kørselsrolle i AWS-dokumentationen.
Her er der reference 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")