Loading
Eräkartoitustiedoston luominen ulkoisesti tallennetuille tiedostoille

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

  1. Luo Salesforcen Määritykset-valikosta integraatiokäyttäjä.
  2. Määritä käyttäjä näillä arvoilla.
    Kenttä Arvo
    Käyttäjälisenssi Salesforce-integraatio
    Profiili Minimikäyttöoikeus - Vain API -integraatiot
  3. Kohdista käyttäjälle Salesforce API Integration -käyttöoikeusjoukkolisenssi.
  4. Luo käyttöoikeusjoukko, joka myöntää nämä käyttöoikeudet:
    • API käytössä
    • Kysele kaikkia tiedostoja
  5. 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")
 
Ladataan
Salesforce Help | Article