

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Amazon S3 S3-Caching
<a name="caching-s3"></a>

Amazon S3 S3-Caching speichert den Cache in einem Amazon S3 S3-Bucket, der auf mehreren Build-Hosts verfügbar ist. Dies ist eine gute Option für kleine bis mittelgroße Build-Artefakte, deren Erstellung teurer ist als das Herunterladen.

Um Amazon S3 in einem Build zu verwenden, können Sie die Pfade für die Dateien angeben, in denen Sie zwischenspeichern möchten`buildspec.yml`. CodeBuild speichert und aktualisiert den Cache automatisch an dem für das Projekt konfigurierten Amazon S3 S3-Speicherort. Wenn Sie die Dateipfade nicht angeben, CodeBuild werden gängige Sprachabhängigkeiten nach besten Kräften zwischengespeichert, um Ihnen zu helfen, die Builds zu beschleunigen. Sie können die Cache-Details in den Build-Logs einsehen.

Wenn Sie mehrere Versionen des Caches haben möchten, können Sie außerdem einen Cache-Schlüssel in der definieren`buildspec.yml`. CodeBuild speichert den Cache im Kontext dieses Cache-Schlüssels und erstellt eine eindeutige Cache-Kopie, die nach der Erstellung nicht aktualisiert wird. Die Cache-Schlüssel können auch projektübergreifend gemeinsam genutzt werden. Funktionen wie dynamische Schlüssel, Cache-Versionierung und gemeinsame Nutzung des Caches zwischen Builds sind nur verfügbar, wenn ein Schlüssel angegeben wird.

Weitere Informationen zur Cachesyntax in der Buildspec-Datei finden Sie [Cache](build-spec-ref.md#build-spec.cache) in der Buildspec-Referenz.

**Topics**
+ [Generieren Sie dynamische Schlüssel](#caching-s3-dynamic)
+ [codebuild-hash-files](#caching-s3-dynamic.codebuild-hash-files)
+ [Cache-Version](#caching-s3-version)
+ [Gemeinsame Nutzung von Caches zwischen Projekten](#caching-s3-sharing)
+ [Buildspec-Beispiele](#caching-s3-examples)

## Generieren Sie dynamische Schlüssel
<a name="caching-s3-dynamic"></a>

Ein Cache-Schlüssel kann Shell-Befehle und Umgebungsvariablen enthalten, um ihn einzigartig zu machen und automatische Cache-Aktualisierungen zu ermöglichen, wenn sich der Schlüssel ändert. Sie können beispielsweise einen Schlüssel mithilfe des Hash der `package-lock.json` Datei definieren. Wenn sich die Abhängigkeiten in dieser Datei ändern, ändert sich der Hash — und damit der Cache-Schlüssel —, was die automatische Erstellung eines neuen Caches auslöst.

```
cache:
    key: npm-key-$(codebuild-hash-files package-lock.json)
```

CodeBuild wertet den Ausdruck aus, um den endgültigen Schlüssel `$(codebuild-hash-files package-lock.json)` zu erhalten:

```
npm-key-abc123
```

Sie können einen Cache-Schlüssel auch mithilfe von Umgebungsvariablen definieren, wie `CODEBUILD_RESOLVED_SOURCE_VERSION` z. Dadurch wird sichergestellt, dass bei jeder Änderung Ihrer Quelle ein neuer Schlüssel generiert wird, was dazu führt, dass automatisch ein neuer Cache gespeichert wird:

```
cache:
   key: npm-key-$CODEBUILD_RESOLVED_SOURCE_VERSION
```

CodeBuild wertet den Ausdruck aus und erhält den endgültigen Schlüssel:

```
npm-key-046e8b67481d53bdc86c3f6affdd5d1afae6d369
```

## codebuild-hash-files
<a name="caching-s3-dynamic.codebuild-hash-files"></a>

`codebuild-hash-files`ist ein CLI-Tool, das mithilfe von Glob-Mustern einen SHA-256-Hash für eine Reihe von Dateien im CodeBuild Quellverzeichnis berechnet:

```
codebuild-hash-files <glob-pattern-1> <glob-pattern-2> ...
```

Hier sind einige Beispiele für die Verwendung von: `codebuild-hash-files`

```
codebuild-hash-files package-lock.json
codebuild-hash-files '**/*.md'
```

## Cache-Version
<a name="caching-s3-version"></a>

Die Cache-Version ist ein Hash, der aus den Pfaden der zwischengespeicherten Verzeichnisse generiert wird. Wenn zwei Caches unterschiedliche Versionen haben, werden sie beim Abgleichen als unterschiedliche Caches behandelt. Beispielsweise werden die folgenden beiden Caches als unterschiedlich betrachtet, da sie auf unterschiedliche Pfade verweisen:

```
version: 0.2

phases:
  build:
    commands:
      - pip install pandas==2.2.3 --target pip-dependencies
cache:
  key: pip-dependencies 
  paths:
    - "pip-dependencies/**/*"
```

```
version: 0.2

phases:
  build:
    commands:
      - pip install pandas==2.2.3 --target tmp/pip-dependencies
cache:
  key: pip-dependencies 
  paths:
    - "tmp/pip-dependencies/**/*"
```

## Gemeinsame Nutzung von Caches zwischen Projekten
<a name="caching-s3-sharing"></a>

Sie können das `cacheNamespace` API-Feld unter dem `cache` Abschnitt verwenden, um einen Cache für mehrere Projekte gemeinsam zu nutzen. Dieses Feld definiert den Umfang des Caches. Um einen Cache gemeinsam zu nutzen, müssen Sie wie folgt vorgehen:
+ Verwenden Sie dasselbe`cacheNamespace`.
+ Geben Sie denselben Cache an`key`.
+ Definieren Sie identische Cache-Pfade.
+ Verwenden Sie dieselben Amazon S3 S3-Buckets und `pathPrefix` falls festgelegt.

Dies gewährleistet Konsistenz und ermöglicht die gemeinsame Nutzung des Caches zwischen Projekten.

### Geben Sie einen Cache-Namespace (Konsole) an
<a name="caching-s3-sharing.console"></a>

1. Öffnen Sie die AWS CodeBuild Konsole unter [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Wählen Sie **Create project** (Projekt erstellen) aus. Weitere Informationen finden Sie unter [Erstellen Sie ein Build-Projekt (Konsole)](create-project.md#create-project-console) und [Ausführen eines Build (Konsole)](run-build-console.md).

1. **Wählen Sie unter **Artefakte** die Option Zusätzliche Konfiguration aus.**

1. Wählen Sie als **Cachetyp** **Amazon S3** aus.

1. Geben Sie für **Cache-Namespace — optional** einen Namespace-Wert ein.  
![\[Cache-Namespace-Parameter in der Konsole. CodeBuild\]](http://docs.aws.amazon.com/de_de/codebuild/latest/userguide/images/s3-cache-namespace.png)

1. Fahren Sie mit den Standardwerten fort und wählen Sie dann **Build-Projekt erstellen**.

### Geben Sie einen Cache-Namespace an ()AWS CLI
<a name="caching-s3-sharing.cli"></a>

Sie können den `--cache` Parameter in verwenden, AWS CLI um einen Cache-Namespace anzugeben.

```
--cache '{"type": "S3", "location": "your-s3-bucket", "cacheNamespace": "test-cache-namespace"}'
```

## Buildspec-Beispiele
<a name="caching-s3-examples"></a>

Hier sind einige Buildspec-Beispiele für gängige Sprachen:

**Topics**
+ [Abhängigkeiten von Node.js zwischenspeichern](#caching-s3-examples.nodejs)
+ [Python-Abhängigkeiten zwischenspeichern](#caching-s3-examples.python)
+ [Ruby-Abhängigkeiten zwischenspeichern](#caching-s3-examples.ruby)
+ [Cache Go-Abhängigkeiten](#caching-s3-examples.go)

### Abhängigkeiten von Node.js zwischenspeichern
<a name="caching-s3-examples.nodejs"></a>

Wenn Ihr Projekt eine `package-lock.json` Datei enthält und `npm` zur Verwaltung der Abhängigkeiten von Node.js verwendet wird, zeigt das folgende Beispiel, wie Sie das Caching einrichten. `npm`Installiert standardmäßig Abhängigkeiten in das `node_modules` Verzeichnis.

```
version: 0.2

phases:
  build:
    commands:
      - npm install
cache:
  key: npm-$(codebuild-hash-files package-lock.json)
  paths:
    - "node_modules/**/*"
```

### Python-Abhängigkeiten zwischenspeichern
<a name="caching-s3-examples.python"></a>

Wenn Ihr Projekt eine `requirements.txt` Datei enthält und Pip zur Verwaltung von Python-Abhängigkeiten verwendet, zeigt das folgende Beispiel, wie Sie das Caching konfigurieren. Standardmäßig installiert Pip Pakete in das Verzeichnis des Systems. `site-packages`

```
version: 0.2

phases:
  build:
    commands:
      - pip install -r requirements.txt
cache:
  key: python-$(codebuild-hash-files requirements.txt)
  paths:
    - "/root/.pyenv/versions/${python_version}/lib/python${python_major_version}/site-packages/**/*"
```

Darüber hinaus können Sie Abhängigkeiten in einem bestimmten Verzeichnis installieren und das Caching für dieses Verzeichnis konfigurieren.

```
version: 0.2

phases:
  build:
    commands:
      - pip install -r requirements.txt --target python-dependencies
cache:
  key: python-$(codebuild-hash-files requirements.txt)
  paths:
    - "python-dependencies/**/*"
```

### Ruby-Abhängigkeiten zwischenspeichern
<a name="caching-s3-examples.ruby"></a>

Wenn Ihr Projekt eine `Gemfile.lock` Datei enthält und diese `Bundler` zur Verwaltung von Gem-Abhängigkeiten verwendet, zeigt das folgende Beispiel, wie Sie das Caching effektiv konfigurieren können.

```
version: 0.2

phases:
  build:
    commands:
      - bundle install --path vendor/bundle
cache:
  key: ruby-$(codebuild-hash-files Gemfile.lock)
  paths:
    - "vendor/bundle/**/*"
```

### Cache Go-Abhängigkeiten
<a name="caching-s3-examples.go"></a>

Wenn Ihr Projekt eine `go.sum` Datei enthält und Go-Module zur Verwaltung von Abhängigkeiten verwendet, zeigt das folgende Beispiel, wie Sie das Caching konfigurieren. Standardmäßig werden Go-Module heruntergeladen und im `${GOPATH}/pkg/mod` Verzeichnis gespeichert.

```
version: 0.2

phases:
  build:
    commands:
      - go mod download
cache:
  key: go-$(codebuild-hash-files go.sum)
  paths:
    - "/go/pkg/mod/**/*"
```