Olet tässä:
Eräkartoitustiedoston luominen ulkoisesti tallennetuille tiedostoille
Valmistele olemassa olevia tiedostoja Amazon Bedrockille tai Amazon Kendralle luomalla kartoitustiedosto, joka liittää Salesforce-tiedostot Amazon S3 -sijainteihin. Sinun täytyy suorittaa tämä tehtävä vain, jos sinulla on Amazon S3 -tiedostoja, joita haluat hakea.
Vaaditut versiot
| Tarvittavat käyttöoikeudet | |
|---|---|
| Ulkoisen tallennustilan haun ottaminen käyttöön: | Sovelluksen mukautusoikeus |
| Käyttöoikeusjoukkojen tarkasteleminen: | Määritysten ja kokoonpanon tarkasteluoikeus |
| Käyttöoikeusjoukkojen kohdistaminen: | Käyttöoikeusjoukkojen kohdistusoikeus |
| Paikallisten ulkoisten asiakassovellusten luominen: | Ulkoisten asiakassovellusten luominen, muokkaaminen ja poistaminen |
Varmista ennen aloittamista, että sinulla on:
- Salesforce-organisaatio, jolla on ulkoinen Amazon S3 -tietolähde, jonka tyyppi on ContentHubAWSS3. Lisätietoja on kohdassa Semanttisen haun määrittäminen.
- AWS-tili, jolla on Lambda-funktioiden, IAM-roolien ja S3-säiliöiden luontioikeus.
- Amazon S3 -säiliö, johon kartoitustiedosto tallennetaan.
Salesforce-integrointikäyttäjän luominen
- Luo Salesforcen Määritykset-valikosta integraatiokäyttäjä.
-
Määritä käyttäjä näillä arvoilla.
Kenttä Arvo Käyttäjälisenssi Salesforce-integraatio Profiili Minimikäyttöoikeus - Vain API -integraatiot - Kohdista käyttäjälle Salesforce API Integration -käyttöoikeusjoukkolisenssi.
-
Luo käyttöoikeusjoukko, joka myöntää nämä käyttöoikeudet:
- API käytössä
- Kysele kaikkia tiedostoja
- Kohdista käyttöoikeusjoukko integraatiokäyttäjälle.
Lisätietoja on Salesforce Developer -dokumentaation kohdissa Integrointikäyttäjät ja Luo käyttöoikeusjoukkoja.
Ulkoisen asiakassovelluksen luominen
Luo paikallinen ulkoinen asiakassovellus, joka käyttää OAuth 2.0 -asiakassovelluksen tunnusten kulkua. Lisää OAuth-asetuksiin Hallitse käyttäjätietoja API-rajapintojen kautta (api) -vaikutusalue ja määritä Salesforce-integrointikäyttäjä käyttäjänä.
Lisätietoja on kohdissa Ulkoisen asiakassovelluksen luominen ja Asiakastunnusten kulun määrittäminen.
Kartoitustiedoston luominen
Ota käyttöön AWS Lambda -funktio, joka kyselee Salesforcesta ulkoisesti tallennettuja tiedostoja ja luo kartoituksen jokaisen Salesforce ContentDocument -tunnuksen ja sen Amazon S3 -sijainnin välillä.
Määritä funktio ympäristömuuttujien avulla. Liitä IAM-suoritusrooli, jonka s3:PutObject myöntää käyttöoikeuden kirjoittaa kartoitustiedosto määritettyyn S3-säiliöön ja lähettää lokit Amazon CloudWatchiin.
Katso ohjeet kohdasta Python Lambda -funktioiden käyttöönotto, Lambda-ympäristön muuttujien käyttäminen ja AWS-dokumentaation Lambda-suoritusrooli.
Alla on viite Lambda-koodiin:
# 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")