All Products
Search
Document Center

Function Compute:Kompilasi dan penerapan paket kode

Last Updated:Apr 01, 2026

Untuk menerapkan fungsi Java ke Function Compute, kemas kode Anda beserta dependensinya ke dalam file ZIP atau JAR, lalu unggah paket tersebut melalui Konsol Function Compute atau Serverless Devs.

Topik ini mencakup dua metode penerapan:

Library dependensi

Function Compute menyediakan dua library Java:

LibraryArtifact IDVersiDeskripsi
com.aliyun:fc-java-corefc-java-core1.4.1Mendefinisikan antarmuka handler dan objek context
com.aliyun:fc-java-eventsfc-java-event1.2.0Menyediakan tipe event untuk sumber event umum

Dapatkan kedua library tersebut dari repositori pusat Maven, lalu tambahkan ke file pom.xml Anda:

<!-- fc-java-core: required -->
<dependency>
    <groupId>com.aliyun.fc.runtime</groupId>
    <artifactId>fc-java-core</artifactId>
    <version>1.4.1</version>
</dependency>

<!-- fc-java-events: optional, add if your function handles events from Alibaba Cloud services -->
<dependency>
    <groupId>com.aliyun.fc.runtime</groupId>
    <artifactId>fc-java-event</artifactId>
    <version>1.2.0</version>
</dependency>
Jika ukuran paket dependensi terlalu besar, kemas dependensi tersebut ke dalam layer untuk menjaga ukuran paket kode tetap kecil. Untuk detailnya, lihat Buat layer kustom.

Terapkan dengan Maven

Prasyarat

Sebelum memulai, pastikan Anda telah:

Langkah-langkah

  1. Buat proyek Java. Tempatkan handler Anda di src/main/java/example/App.java:

    package example;
    
    import com.aliyun.fc.runtime.Context;
    import com.aliyun.fc.runtime.StreamRequestHandler;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    public class App implements StreamRequestHandler {
    
        @Override
        public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException {
            outputStream.write(new String("hello world").getBytes());
        }
    }

    Untuk contoh handler lainnya, lihat Handlers dan Context.

  2. Pada file pom.xml, tambahkan plugin maven-shade-plugin ke bagian <build>. Plugin ini menggabungkan semua dependensi Anda ke dalam satu file JAR yang siap diterapkan.

    Anda juga dapat menggunakan Apache Maven Assembly sebagai alternatif Apache Maven Shade.
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <filters>
                                <filter>
                                    <artifact>*:*</artifact>
                                    <excludes>
                                        <exclude>META-INF/*.SF</exclude>
                                        <exclude>META-INF/*.DSA</exclude>
                                        <exclude>META-INF/*.RSA</exclude>
                                    </excludes>
                                </filter>
                            </filters>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <details> <summary>Contoh lengkap pom.xml</summary>

    <project xmlns="http://maven.apache.org/POM/4.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>example</groupId>
      <artifactId>HelloFCJava</artifactId>
      <packaging>jar</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>HelloFCJava</name>
    
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>com.aliyun.fc.runtime</groupId>
          <artifactId>fc-java-core</artifactId>
          <version>1.4.1</version>
        </dependency>
      </dependencies>
    
      <build>
        <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-shade-plugin</artifactId>
              <version>3.2.1</version>
              <executions>
                <execution>
                  <phase>package</phase>
                  <goals>
                    <goal>shade</goal>
                  </goals>
                  <configuration>
                    <filters>
                      <filter>
                        <artifact>*:*</artifact>
                        <excludes>
                          <exclude>META-INF/*.SF</exclude>
                          <exclude>META-INF/*.DSA</exclude>
                          <exclude>META-INF/*.RSA</exclude>
                        </excludes>
                      </filter>
                    </filters>
                  </configuration>
                </execution>
              </executions>
            </plugin>
        </plugins>
      </build>
    
      <properties>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.test.skip>true</maven.test.skip>
      </properties>
    </project>

    </details>

  3. Dari direktori root proyek, jalankan perintah berikut:

    Penting

    Pada macOS dan Linux, pastikan file kode dapat dibaca dan dieksekusi sebelum dikompresi.

    mvn clean package

    Proses build yang berhasil akan diakhiri dengan:

    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  11.681 s
    [INFO] Finished at: 2020-03-26T15:55:05+08:00
    [INFO] ------------------------------------------------------------------------

    Nama file JAR hasil build mengikuti nilai bidang artifactId dan version dalam file pom.xml. Pada contoh di atas, nama filenya adalah target/HelloFCJava-1.0-SNAPSHOT.jar. Jika proses build gagal, periksa pesan error dan perbaiki kode sebelum mencoba lagi.

  4. Masuk ke Konsol Function Compute dan unggah file JAR tersebut.

    image

  5. Pada halaman Function Details, buka tab Configurations dan verifikasi nilai Handler. Format handler harus mengikuti pola [Nama paket].[Nama kelas]::[Nama metode]. Pada contoh di atas, handler-nya adalah example.App::handleRequest. Klik Modify untuk memperbarui nilainya jika diperlukan.

    image

  6. Pada tab Code, klik Test Function untuk memverifikasi penerapan.

    image

Terapkan dengan Serverless Devs

Serverless Devs menangani proses kompilasi dan penerapan dalam satu perintah — s deploy menjalankan mvn package secara otomatis sebelum mengunggah kode Anda.

Prasyarat

Sebelum memulai, pastikan Anda telah:

Langkah-langkah

  1. Inisialisasi proyek:

    s init

    Saat diminta, pilih Alibaba Cloud sebagai vendor dan pilih templat Java, runtime, wilayah, serta nama fungsi.

  2. Masuk ke direktori proyek:

    cd start-fc-event-java8

    Struktur proyeknya seperti berikut:

    start-fc-event-java8
    ├── src
    │   └── main
    │       └── java
    │           └── example
    │               └── App.java
    ├── pom.xml
    ├── readme
    └── s.yaml
  3. Terapkan proyek:

    s deploy

    Serverless Devs menjalankan mvn package terlebih dahulu (melalui hook pre-deploy), lalu mengunggah dan menerapkan file JAR tersebut. Proses penerapan yang berhasil akan menghasilkan output seperti berikut:

    [2022-04-07 12:00:09] [INFO] [S-CORE] - Start the pre-action
    [2022-04-07 12:00:09] [INFO] [S-CORE] - Action: mvn package
    [INFO] Scanning for projects...
    [INFO] ------------------------< example:HelloFCJava >-------------------------
    [INFO] Building HelloFCJava 1.0-SNAPSHOT
    [INFO] --------------------------------[ jar ]---------------------------------
    ......
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  3.617 s
    [INFO] Finished at: 2022-04-07T20:00:14+08:00
    [INFO] ------------------------------------------------------------------------
    [2022-04-07 12:00:14] [INFO] [S-CORE] - End the pre-action
    
     Checking Service, Function (0.64s)
     Creating Service, Function (0.71s)
    
    Tips for next step
    ======================
    * Display information of the deployed resource: s info
    * Display metrics: s metrics
    * Display logs: s logs
    * Invoke remote function: s invoke
    * Remove Service: s remove service
    * Remove Function: s remove function
    * Remove Trigger: s remove trigger
    * Remove CustomDomain: s remove domain
    
    helloworld:
      region:   cn-hangzhou
      service:
        name: hello-world-service
      function:
        name:       start-fc-event-java8
        runtime:    java8
        handler:    example.App::handleRequest
        memorySize: 128
        timeout:    60
  4. Panggil fungsi tersebut untuk memverifikasi bahwa fungsinya berjalan dengan benar:

    s invoke

    Output yang diharapkan:

    ========= FC invoke Logs begin =========
    FC Initialize Start RequestId: b246c3bf-06bc-49e5-92b8-xxxxxxxx
    FC Initialize End RequestId: b246c3bf-06bc-49e5-92b8-xxxxxxxx
    FC Invoke Start RequestId: b246c3bf-06bc-49e5-92b8-xxxxxxxx
    FC Invoke End RequestId: b246c3bf-06bc-49e5-92b8-xxxxxxxx
    
    Duration: 7.27 ms, Billed Duration: 8 ms, Memory Size: 128 MB, Max Memory Used: 65.75 MB
    ========= FC invoke Logs end =========
    
    FC Invoke Result:
    hello world

Langkah selanjutnya