U bent hier:
Een batchtoewijzingsbestand genereren voor extern opgeslagen bestanden
Bereid bestaande bestanden voor Amazon Bedrock of Amazon Kendra voor door een toewijzingsbestand te genereren dat Salesforce-bestanden koppelt aan hun Amazon S3-locaties. U moet deze taak alleen voltooien als u bestaande bestanden in Amazon S3 hebt waarin u wilt zoeken.
Vereiste editions
| Vereiste gebruikersmachtigingen | |
|---|---|
| Zoeken naar externe opslag inschakelen: | Aanvraag aanpassen |
| Machtigingensets weergeven: | Set-up en configuratie weergeven |
| Machtigingensets toewijzen: | Machtigingensets toewijzen |
| Lokale externe clientapps maken: | Externe clientapps maken, bewerken en verwijderen |
Controleer voordat u begint of u het volgende hebt gedaan:
- Een Salesforce-organisatie met een externe Amazon S3-gegevensbron van het type ContentHubAWSS3. Zie Semantisch zoeken instellen.
- Een AWS-account met de machtiging om lambdafuncties, IAM-rollen en S3-buckets te maken.
- Een Amazon S3-bucket waarin het toewijzingsbestand moet worden opgeslagen.
Een Salesforce Integration-gebruiker maken
- Maak vanuit Set-up van Salesforce een integratiegebruiker.
-
Configureer de gebruiker met deze waarden.
Veld Waarde Gebruikerslicentie Salesforce-integratie Profiel Minimale toegang - API Only-integraties - Wijs de Salesforce API Integration-machtigingensetlicentie toe aan de gebruiker.
-
Maak een machtigingenset die deze machtigingen verleent:
- API ingeschakeld
- Query uitvoeren op alle bestanden
- Wijs de machtigingenset toe aan de integratiegebruiker.
Zie Integratiegebruikers in Salesforce-ontwikkelaarsdocumentatie en Machtigingensets maken voor meer informatie.
Een externe clientapp maken
Maak een lokale externe clientapp die de OAuth 2.0-stroom voor clientinloggegevens gebruikt. Voeg in de OAuth-instellingen het bereik Gebruikersgegevens beheren via API's (Api) toe en configureer de Salesforce-integratiegebruiker als de run-as-gebruiker.
Zie Een externe clientapp maken en Een stroom Clientinloggegevens configureren voor gedetailleerde instructies.
Het toewijzingsbestand maken
Implementeer een AWS Lambda-functie die een query uitvoert op Salesforce voor extern opgeslagen bestanden en een toewijzing genereert tussen elke Salesforce ContentDocument-ID en de Amazon S3-locatie ervan.
Configureer de functie door middel van omgevingsvariabelen. Voeg een IAM-uitvoeringsrol bij met s3:PutObject die machtiging verleent om het toewijzingsbestand naar de aangewezen S3-bucket te schrijven en logboeken te verzenden naar Amazon CloudWatch.
Zie Python Lambda-functies implementeren, Lambda-omgevingsvariabelen gebruiken en Lambda-uitvoeringsrol in de AWS-documentatie voor instructies.
Hier is verwijzing Lambda-code:
# 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")