All Products
Search
Document Center

Function Compute:Kompilasi dan penerapan paket kode

Last Updated:Sep 05, 2026

Untuk menerapkan fungsi Java ke Function Compute, kemas kode 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:

Library Artifact ID Versi Deskripsi
com.aliyun:fc-java-core fc-java-core 1.4.1 Mendefinisikan antarmuka handler dan objek konteks
com.aliyun:fc-java-events fc-java-event 1.2.0 Menyediakan tipe event untuk sumber event umum

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

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

<!-- fc-java-events: opsional, tambahkan jika fungsi Anda menangani event dari layanan Alibaba Cloud -->
<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 dependensinya ke dalam layer agar 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 pengganti 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, file tersebut 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 Configuration 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. Jika perlu, klik tombol Modify pada bagian Basic Configurations untuk memperbaruinya.

    image

  6. Pada tab Code, klik tombol 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 proyek akan tampak 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. Penerapan yang berhasil akan menghasilkan output serupa 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 untuk memverifikasi bahwa fungsi 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